こんにちは、shelarcy です。

On Sat, 25 Oct 2003 08:55:12 +0900 (JST), Nobuo Yamashita  
<nobsun / sampou.org> wrote:
>> fix f = let x = f x in x
>> Monad と同じ要領です。
>
>   解説お願いします。(^_^;)

nobsun がより詳細な解説をしているので、あまり語ることはないのですが……。

>>   前者の fixpoint が g (fixpoint g) を満たすことは導けますが
>> 同じ定義といえるんでしょうか。例えば
>> f(x) = x mod p と g(x) = x**p mod p (p は素数とする)
>> で f と g は結果的には一致いますが定義としては違うという
>> 気がします。上記にもそういう感じはないですか。
>
> その意味では、違う定義でしょう。
> ML では、y f = f (y f) のような定義はできないので、
> 巧妙に同等の定義が可能なような工夫がされています。
> それが逆にわかりにくい原因だと思います。

ML が正格評価に対し Haskell が遅延評価の言語であることを思い出してくださ 
い。
単純な定義でも Haskell は最後に来た時に止まることができますが、ML は止まら 
ず
に無限ループとなってしまいます。


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

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