Unlambda
■カテゴリ / ■テンプレート
Unlambda(アンラムダ)はコンビネータ論理とラムダ計算に基づく、仕様の小さな、ほぼ純粋な関数型言語のプログラミング言語である。デビッド・マドレ(David Madore)によって設計された。
原則としては「`AB」というコードは、まず A そして B を評価し、それから、A に対して B を適用する。しかしながら、もし A が特殊な値「d」を評価するなら、B が評価される代わりに、「`dB」が「遅延演算」という特殊なオブジェクトになる。その遅延演算オブジェクトに引数 C が適用された時に初めて B が評価される。それ自身に副作用がないという点で、`d演算子と`i演算子は等価であるといえる。ただし、「`dB」では後に何かの引数が適用された場合に B の副作用が発生するが、「`iB」では B を評価する時点で副作用が発生するという点で異なる。
Unlambda言語には「v」という組込演算子もある。これは引数を無視してvを返すものである。厳密にいうと、この演算子は必要不可欠というわけではない。というのは、v演算子は「```s``s`kskk``s``s`kskk」として実現することができるからである。つまり、この演算子は利便性のために用意されているものである。(このコードは、不動点演算子 Yを使って、さらに簡単に「`Yk」と表現することもできる。)