On Mon, 15 Dec 2003 17:48:52 +0900, TOYOFUKU Chikanobu 
<nobu_toyofuku / nifty.com> wrote:
>   ...
>> ええと、ダメでとはどういう意味ででしょうか?
>
>   done () と echo () のように () を付けてしまうと型が unit に
> なるので val >>= : 'a io * ('a -> 'b io) -> 'b io
> の ('a -> 'b io) と型が合わなくなるのではないかという意味です。

ML 系の言語では IO という型はなくて代わりに型が帰ってこないことを
示す unit 型を使うので、そのあたりは気にしなくて構いません。


逆にいえば、

>   echo の「>>=」を使わないバージョンは
> func echo ML () = let val c = get () in
>                   if c = #"\n" then
>                     ()
>                   else
>                     (putcML c; echoML())
>                   end
> と fix を使わなくても書けるけれども「>>=」を使って書こうと
> すると fix を使わないと書けないと理解したのですが。

の if c = #"\n" then () や putcML c あたりでも型は unit になっています。



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

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