оператор J
Эта статья может быть слишком технической для понимания большинства читателей . ( Октябрь 2010 г. ) |
В информатике посткомпонует Питера Ландина представляет оператор J собой программную конструкцию, которая лямбда - выражение с продолжением текущего лямбда-контекста. Полученная «функция» является первоклассной и может быть передана последующим функциям, где в случае применения она вернет свой результат продолжению функции, в которой она была создана.
История [ править ]
Оператор J был создан для создания меток и перехода к значениям первого класса. Он был разработан для работы с машиной SECD со следующими дополнительными переходами:
Переход | От | К |
---|---|---|
Дж | Дж : ж : С , Э , ап : С , Д | закрытие ( ж , D ): S , E , C , D |
Закрытие | замыкание ( f , ( S' , E' , C' , D' )): x : S , E , ap : C , D | е : х : S' , E' , ap : C' , D' |
Оператор J изначально создавал так называемое «закрытие программы», состоящее из функции, называемой телом, и состояния SECD, называемого дампом. Закрытие программы эквивалентно составлению ее тела с дампом в форме продолжения ( замыкание ( f , D )( x) = D ( f ( x )) ).
Упрощенное описание [ править ]
Оператор J составляет функцию с продолжением вызывающей функции. То есть оператор J возвращает функцию, которая при применении применяет аргумент оператора J к аргументу функции, а затем заставляет функцию, вызвавшую оператор J, вернуть это значение.
Примеры [ править ]
J( λx.x ) эквивалентен оператору возврата первого класса. Это связано с тем, что λx.x — это тождественная функция, поэтому при ее применении она ничего не делает с заданным значением и сразу же возвращает его.
λв. J( λx.x ) изначально возвращает J из λx.x , но это можно использовать в окружающем выражении, чтобы заставить его повторно возвращать другое значение.
См. также [ править ]
Ссылки [ править ]
- Город Ландин
- Ландин, П.Дж. (январь 1964 г.). «Механическая оценка выражений» . Вычислить. Дж. 6 (4): 308–320. дои : 10.1093/comjnl/6.4.308 .
- Ландин, П.Дж. (февраль 1965 г.). «Соответствие между АЛГОЛом 60 и лямбда-нотацией Чёрча: Часть I» . Комм. АКМ . 8 (2): 89–101. дои : 10.1145/363744.363749 . S2CID 6505810 .
- Ландин, П.Дж. (март 1965 г.). «Соответствие между АЛГОЛОМ 60 и лямбда-нотациями Чёрча: Часть II» . Комм. АКМ . 8 (3): 158–167. дои : 10.1145/363791.363804 . S2CID 15781851 .
- Ландин, П.Дж., «Формальное описание Алгола 60». Представлено на рабочей конференции ИФИП, Баден, сентябрь 1964 г.
- Ландин, П.Дж., «Программирование без императивов — пример», Отчет об исследовании UNIVAC SP (март 1965 г.)
- Лэндин, П.Дж., «Избавление от этикеток», Отчет об исследовании UNIVAC SP (июль 1965 г.)
- Ландин, П.Дж., «Анализ присваиваний в языках программирования», Отчет об исследовании UNIVAC SP (сентябрь 1965 г.);
- Ландин, П.Дж., «Обобщение переходов и меток», math.bas.bg (1998).
- Другие
- Тилеке, Х. (декабрь 1998 г.). «Введение в книгу Ландина «Обобщение переходов и меток» » (PDF) . Вычисления высшего порядка и символьные вычисления . 11 (2): 117–123. дои : 10.1023/А:1010060315625 . S2CID 1562780 .
- Дэнви, О. ; Милликин, К. (ноябрь 2008 г.). Теннент, Роберт (ред.). «Рациональная деконструкция машины SECD Ландина с оператором J». Логические методы в информатике . 4 (4:12): 1–67. arXiv : 0811.3231 . дои : 10.2168/LMCS-4(4:12)2008 . S2CID 7926360 .
- Дэнви, О. ; Шан, CC; Зерный, И. (2009). «J для JavaScript: прямое соответствие между алголоподобными языками и JavaScript с использованием первоклассных продолжений» (PDF) . Предметно-специфичные языки . ЛНКС . Том. 5658. стр. 1–19. дои : 10.1007/978-3-642-03034-5_1 . ISBN 978-3-642-03033-8 . Архивировано из оригинала (PDF) 18 августа 2010 г. Проверено 19 сентября 2009 г.