豊福です。

shelarcyさん
>>   done () と echo () のように () を付けてしまうと型が unit に
>> なるので val >>= : 'a io * ('a -> 'b io) -> 'b io
>> の ('a -> 'b io) と型が合わなくなるのではないかという意味です。
> 
> ML 系の言語では IO という型はなくて代わりに型が帰ってこないことを
> 示す unit 型を使うので、そのあたりは気にしなくて構いません。

  「>>=」の次には ('a -> 'b io) (ここでは 'a が char、'b
が unit なので (char -> (unit -> unit)))がこなくてはいけない
ところに
  fn c => if (c = #"\n") then
            done ()
          else
            putc c >>
            echo ()
という (char -> unit) がくるとまずくないですか。
---
                        豊福
                        nobu_toyofuku / nifty.com


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