HN 日本語サマリー

← 一覧へ戻る
プログラミング

Show HN: 配列言語におけるコンビネータ

Show HN: Combinators in Array Languages (blog.softwarewrighter.com)

9 pointsby softwarewright0 コメント

要約

この記事は、レイモンド・スマリヤンの著書「To Mock a Mockingbird」に登場するコンビネータ鳥をAPL派生言語で実装する際の課題、特に熱心評価言語におけるSage鳥(Yコンビネータ)の実装問題について論じています。厳密評価言語でのYコンビネータの代替としてZコンビネータが紹介され、その実装方法とスマリヤンの書籍との関連性についても触れています。

全文翻訳

Raymond Smullyan の著書 "To Mock a Mockingbird" に登場するコンビネータ鳥の鳥小屋が、APL派生言語で実装されており、厳密評価言語で Sage 鳥(不動点または Y コンビネータ)を実装する問題について論じています。

新しい APL は遅延評価をサポートしています。私の厳密評価言語にはこのための回避策があります。Z コンビネータは標準的な厳密言語での修正方法です。自己適用を1つの追加関数レイヤー(λv. x x v)でラップすることで、再帰は実行中の式ではなく値(遅延された呼び出し)になります。sw-MLPL では、言語に匿名ラムダがないため、その遅延を名前付きの部分適用(z_step/z_recur/applicative_sage)として表現しています。

Z には Smullyan の名前はなく(そして、文字にもかかわらず鳥小屋にシマウマはいません)、本は厳密性の問題を予期しておらず無視しているため、適用順序のバリアントがありません。「Z コンビネータ」は、イータ展開された Y に対するプログラマの伝承です。