Skip to content
shunsakuraba edited this page Jun 17, 2011 · 5 revisions

特殊フィールド

f[0]は関数の引数に使える特殊なフィールドである。いまのところこれ以外に引数に使えるフィールドは見つかっていない (見つけてくれ)。 g(f[0])を実行するには S (K g) get zero で呼び出す。

遅延

  • S (K g) (K x) _ == g x

何か引数が来るまでg(x)の評価を遅延させたい時に使う。 ゾンビプロセスや、連続して何度も使うプロセスを作りたいときに有用。

例:

f[2] = S (K dec) (K zero)
f[0] = f[2]; f[0] I   // decが実行される
f[0] = f[2]; f[0] I   // decが実行される
...

関数の順次実行

副作用をメインとしている関数はIを返すので、Sでつなげるだけ!

(S (S (K inc) (K zero) ) (S (K inc) (K zero) ) I

Clone this wiki locally