operator J

W informatyce operator J Petera Landina jest konstrukcją programistyczną, która tworzy wyrażenie lambda z kontynuacją bieżącego kontekstu lambda . Powstała „funkcja” jest pierwszorzędna i może być przekazywana do kolejnych funkcji, gdzie zastosowana zwróci swój wynik do kontynuacji funkcji, w której została utworzona.

Historia

Operator J został stworzony, aby etykiety i skoki były wartościami pierwszej klasy. Został zaprojektowany do pracy z maszyną SECD z następującymi dodatkowymi przejściami:

Przemiana Z Do
J J : f : S , E , ap : C , D domknięcie ( fa , re ): S , mi , do , re
Zamknięcie zamknięcie ( fa , ( S' , E' , C' , D' )): x : S , mi , ap : do , re f : x : S' , E' , ap : C' , D'

Operator J pierwotnie stworzył tak zwane „zamknięcie programu”, składające się z funkcji zwanej treścią i stanu SECD zwanego zrzutem. Zamknięcie programu jest równoznaczne ze złożeniem jego ciała ze zrzutem w postaci kontynuacji ( closed ( f , D )( x) = D ( f ( x )) ).

Uproszczony opis

Operator J tworzy funkcję z kontynuacją funkcji wywołującej. Oznacza to, że operator J zwraca funkcję, która po zastosowaniu stosuje argument operatora J z argumentem funkcji, a następnie zmusza funkcję, która wywołała operatora J, do zwrócenia tej wartości.

Przykłady

J( λx.x ) jest odpowiednikiem instrukcji return pierwszej klasy. Dzieje się tak, ponieważ λx.x jest funkcją identyczności, więc kiedy zostanie zastosowana, nie zrobi nic z podaną wartością i natychmiast ją zwróci.

λv. J( λx.x ) początkowo zwraca J z λx.x , ale można tego użyć w otaczającym wyrażeniu, aby ponownie zwróciło inną wartość.

Zobacz też

By Landin
  • Landin, PJ (styczeń 1964). „Mechaniczna ocena wyrażeń” . Oblicz. J. 6 (4): 308–320. doi : 10.1093/comjnl/6.4.308 .
  •   Landin, PJ (luty 1965). „Korespondencja między ALGOL 60 a notacją Lambda Kościoła: część I” . Kom. ACM . 8 (2): 89–101. doi : 10.1145/363744.363749 . S2CID 6505810 .
  •   Landin, PJ (marzec 1965). „Korespondencja między ALGOL 60 a notacjami Lambda Kościoła: część II” . Kom. ACM . 8 (3): 158–167. doi : 10.1145/363791.363804 . S2CID 15781851 .
  • Landin, PJ, „Formalny opis Algola 60”. Przedstawiono na konferencji roboczej IFIP w Badenii, wrzesień 1964 r.
  • Landin, PJ, „Programowanie bez imperatywów — przykład”, raport badawczy UNIVAC SP (marzec 1965)
  • Landin, PJ, „Getting Rid of Labels”, raport badawczy UNIVAC SP (lipiec 1965)
  • Landin, PJ, „Analiza przypisania w językach programowania”, raport badawczy UNIVAC SP (wrzesień 1965)
  • Landin, PJ, „Uogólnienie skoków i etykiet”, math.bas.bg (1998)
Przez innych