こんにちは、shelarcy です。

On Fri, 24 Oct 2003 17:14:03 +0900, TOYOFUKU Chikanobu  
<nobu_toyofuku / nifty.com> wrote:
>> fact = y (\ f n -> if n == 0 then 1 else n * f (n-1))
> 
>>> fun F(f)(n) = if n=0 then 1 else n * f(n-1);
>>> val factorial = fixpoint(F);
> は同じですから違いは
>> y f = f (y f)
> 
>>> fun fixpoint(g) =
>>>   let fun h(y) = g(fn x => psi(y)(y)(x))
>>>    in h(psi_inv(h))
>>>   end;
> のとこですね。
>   前者は両辺に y が出てきますが後者は左辺にしか fixpoint が
> 出てこないので定義としては違うんじゃないでしょうか。

いえ、同じです。
要はこういうことですから。

fix f = let x = f x in x

Monad と同じ要領です。


-- 
shelarcy <shelarcy / capella.freemail.ne.jp>
http://page.freett.com/shelarcy/

--
ML: haskell-jp / quickml.com
使い方: http://QuickML.com/