豊福です。

shelarcyさん
> 型の再帰定義です。
> つまり、ML で直接これが書けないというところに戻ってくるわけですが。
> y :: (a -> a) -> a
> y f = f (y f)

 SML only allows recursive definition of functions.
In order to treat  'a io  as an abstract type, we define a
fixpoint operator,   fix
  val fix    : ('a io -> 'a io) -> 'a io
  fun fix h  = let fun f () = h f () in f end
The definition depends on the fact that  'a io  is the same
as  unit -> 'a,  but once the function has been defined it
may be used in a scope where  'a io  is taken as an abstract type.

のことだと思うのですが理解できていません。もし型の再帰定義が
できるとしたら具体的にどの型をどう再帰定義で書けるということ
でしょうか。もう一つ。前の factorial のときはYコンビネータで
定義した fix を使う必要があったのにこちらはシンプルな定義の
fix で済むのはなぜでしょうか。
---
                        豊福
                        nobu_toyofuku / nifty.com


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