kuzha で Y コンビネータその2
とりあえず匿名メッセージを送ると関数が呼び出されるようにしてみた。
ku> sample = ^(puts: "Hello!"); > kuzha.object.KuFunction@929206 ku> &sample; > kuzha.object.KuFunction@929206 ku> &sample<!>; > Hello!
ので、さっきのYコンビネータを書き換えてみる。
ku> Y = fun f (fun proc (f: fun arg (proc: &proc, <!>: arg)) <!>: fun proc (f: fun arg (proc: &proc, <!>: arg))); > fact = Y: fun f (fun n (n <= 1 ? 1 : n * (f: n-1))); > fact: 10; > 3628800
実行。おk。匿名メッセージ <!> は後で変更するかも。