Loading article…
コンピュータサイエンスにおいて、 ピーター・ランディンのJ 演算子は、現在のラムダコンテキストへの継続を使用してラムダ式を後から合成するプログラミング構造です。結果として得られる「関数」はファーストクラスであり、後続の関数に渡すことができます。適用されると、その結果が、それが作成された関数の継続に返されます。
歴史
J 演算子は、ラベルとジャンプをファーストクラスの値にするために作成されました。次の追加の遷移を使用して、 SECD マシンで動作するように設計されました。
J 演算子はもともと、本体と呼ばれる関数とダンプと呼ばれる SECD 状態で構成される「プログラム クロージャ」と呼ばれるものを作成しました。プログラム クロージャは、継続形式 (クロージャ( f、D )( x) = D ( f ( x )) ) で本体とダンプを合成することと同じです。
簡略化された説明
J 演算子は、呼び出し関数の継続を使用して関数を構成します。つまり、J 演算子は関数を返します。この関数を適用すると、J 演算子の引数が関数の引数に適用され、J 演算子を呼び出した関数がその値を返すように強制されます。
例
J( λx.x ) は、ファーストクラスの return ステートメントと同等です。これは、λx.xが恒等関数であるため、適用されたときに指定された値に対して何も行わず、すぐに返すためです。
λv. J( λx.x ) は最初にλx.xの J を返しますが、それを周囲の式で使用すると、別の値を再度返すことができます。
参照
参考文献
- ランディン著
- ペタリン州ランディン(1964年1月)。 「式の機械的評価」。計算します。 J. 6 (4): 308–320。土井: 10.1093/comjnl/6.4.308。
- Landin, PJ (1965 年 2 月)。「ALGOL 60 と Church のラムダ記法の対応: パート I」。Comm . ACM . 8 (2): 89–101. doi : 10.1145/363744.363749 . S2CID 6505810。
- Landin, PJ (1965 年 3 月)。「ALGOL 60 と Church のラムダ表記法の対応: パート II」。Comm . ACM . 8 (3): 158–167. doi : 10.1145/363791.363804 . S2CID 15781851。
- Landin, PJ、「Algol 60 の正式な説明」。1964 年 9 月、バーデンの IFIP ワーキング カンファレンスで発表。
- Landin, PJ、「インペラティブを使用しないプログラミング - 例」、UNIVAC SP 研究レポート (1965 年 3 月)
- ランディン、PJ、「ラベルの廃止」、UNIVAC SP 研究レポート (1965 年 7 月)
- Landin, PJ、「プログラミング言語における割り当ての分析」、UNIVAC SP 研究レポート (1965 年 9 月)
- Landin, PJ、「ジャンプとラベルの一般化」、math.bas.bg (1998)
- 他の人によって
- Thielecke, H. (1998年12 月)。「Landinの「ジャンプとラベルの一般化」の紹介」(PDF)。高階および記号計算。11 (2): 117–123。doi : 10.1023 /A:1010060315625。S2CID 1562780。
- Danvy, O. ; Millikin, K. (2008 年 11 月)。Tennent, Robert (編)。「J 演算子による Landin の SECD マシンの合理的分解」。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 は JavaScript の略: 第一級継続を使用した Algol 系言語と JavaScript 間の直接的な対応」(PDF) .ドメイン固有言語. LNCS . Vol. 5658. pp. 1–19. doi : 10.1007/978-3-642-03034-5_1 . ISBN 978-3-642-03033-8. 2010年8月18日時点のオリジナル(PDF)からアーカイブ。2009年9月19日閲覧。
