On Sun, 26 Oct 2003 01:49:41 +0900, TOYOFUKU Chikanobu  
<nobu_toyofuku / nifty.com> wrote:
>   x = f x in x の方は後から f の不動点のことかとわかったのですが
>>>> Monad と同じ要領です。
> こちらがわかりませんでした。

bind の型定義のことです。


某所の"How to Declare an Imperative"の要約より side effectによるmonadの表現
(現在ではどこにいったのか分かりません)

m >>= k
'a io * ('a-<'b io) ->'b io

fn()=>let
     val x=m ()
     val y=k x ()
   in
     y
   end


fix h
('a io->'a io) ->'a io

let
   fun f() = h f()
in
   f
end

SMLでは再帰定義は関数についてだけ可能なので、抽象データ型'a ioを利用
するためには不動点演算子fixを定義する。



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

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