J оператор

В информатике оператор J Питера Ландина — это программная конструкция, которая посткомпозирует лямбда - выражение с продолжением в текущий лямбда-контекст. Полученная «функция» является первоклассной и может быть передана последующим функциям, где при применении она вернет свой результат в продолжение функции, в которой она была создана.

История

Оператор J был создан для того, чтобы сделать метки и переходы первоклассными значениями. Он был разработан для работы с машиной SECD со следующими дополнительными переходами:

ПереходОтК
Дж.J : f : S , E , ap : C , Dзакрытие ( f , D ): S , E , C , D
Закрытиезакрытие ( f , ( S' , E' , C' , D' )): x : S , E , ap : C , Df : x : S' , E' , ap : C' , D'

Оператор J изначально создал то, что называлось «замыканием программы», состоящее из функции, называемой телом, и состояния SECD, называемого дампом. Замыкание программы эквивалентно составлению ее тела с дампом в форме продолжения ( замыкание ( f , D )( x) = D ( f ( x )) ).

Упрощенное описание

Оператор J составляет функцию с продолжением вызывающей функции. То есть оператор J возвращает функцию, которая при применении применяет аргумент оператора J к аргументу функции, а затем заставляет функцию, вызвавшую оператор J, вернуть это значение.

Примеры

J( λx.x ) эквивалентен оператору возврата первого класса. Это потому, что λx.x является функцией тождества, поэтому при применении она ничего не делает с заданным значением и сразу возвращает его.

λv. J( λx.x ) изначально возвращает J из λx.x , но это можно использовать в окружающем выражении, чтобы заставить его повторно вернуть другое значение.

Смотрите также

Ссылки

Автор: Ландин
  • Ландин, П.Дж. (январь 1964 г.). «Механическая оценка выражений». Вычислить. J. 6 (4): 308–320 . doi : 10.1093/comjnl/6.4.308 .
  • Landin, PJ (февраль 1965). «Соответствие между ALGOL 60 и лямбда-нотацией Чёрча: Часть I». Comm. ACM . 8 (2): 89– 101. doi : 10.1145/363744.363749 . S2CID  6505810.
  • Landin, PJ (март 1965). «Соответствие между ALGOL 60 и лямбда-нотациями Чёрча: Часть II». Comm. ACM . 8 (3): 158– 167. doi : 10.1145/363791.363804 . S2CID  15781851.
  • Ландин, П. Дж., «Формальное описание Алгола 60». Представлено на рабочей конференции IFIP, Баден, сентябрь 1964 г.
  • Ландин, П. Дж., «Программирование без императивов — пример», отчет об исследовании UNIVAC SP (март 1965 г.)
  • Ландин, П. Дж., «Избавление от ярлыков», исследовательский отчет UNIVAC SP (июль 1965 г.)
  • Ландин, П. Дж., «Анализ присваивания в языках программирования», отчет об исследовании UNIVAC SP (сентябрь 1965 г.)
  • Ландин, П.Дж., «Обобщение переходов и меток», math.bas.bg (1998)
Другие
  • Thielecke, H. (декабрь 1998 г.). "Введение в "Обобщение переходов и меток" Ландина" (PDF) . Вычисления высшего порядка и символьные вычисления . 11 (2): 117– 123. doi :10.1023/A:1010060315625. S2CID  1562780.
  • Danvy, O. ; Millikin, K. (ноябрь 2008 г.). Tennent, Robert (ред.). "Рациональная деконструкция машины SECD Ландина с оператором J". Logical Methods in Computer Science . 4 (12): 1– 67. arXiv : 0811.3231 . doi :10.2168/LMCS-4(4:12)2008. S2CID  7926360.
  • Danvy, O. ; Shan, CC; Zerny, I. (2009). "J Is for JavaScript: A Direct-Style Correspondence between Algol-Like Languages ​​and JavaScript Using First-Class Continuations" (PDF) . Предметно-ориентированные языки . LNCS . Том 5658. стр.  1– 19. doi : 10.1007/978-3-642-03034-5_1 . ISBN 978-3-642-03033-8. Архивировано из оригинала (PDF) 2010-08-18 . Получено 2009-09-19 .


Взято с "https://en.wikipedia.org/w/index.php?title=J_operator&oldid=1260199442"