Y combinator

メモメモ。

y f = f (y f)
fact f x = if x==0 then 1 else x * f (x-1)
Main> y fact 10
3628800
Main> 

Scheme で書かれた Y Combinator の解説を読んだけど、僕にはちょっとわからんかった。遅延評価のある Haskell だとすごく簡単で、わかりやすい(気がする)。
なんだか Y Combinator は、引数に取った関数を repeat してうまくくっつけてるだけのように感じるんだけど、どうなんだろう。
束縛変数しかないとか、なんかそういうところがすごいんだろうか。(←意味はまったくわかってない)