関数型プログラミング ..
[2ch|▼Menu]
91:デフォルトの名無しさん
02/04/22 03:35
色々試しているのですが、次のコードで
ERROR "ファイル名":3 - Type error in function binding
*** Term : sel
*** Type : a -> IO a
*** Does not match : a -> a
*** Because : unification would give infinite type
というのが消えてくれません。

module Main (main) where

sel x = do putStr "(y/n) ? "; c <- getChar
       return (
        case c of
         'y' -> sel (x + 1)
         'n' -> x
         _ -> sel x)

main = do putStr (show (sel 0))

selの型は Int -> IO Intのつもりなのですが、型を明示しても駄目です。
いじっていると、IO (IO Int)みたいな型がエラー報告で出るときもあります。

このコードはどうすれば通るのでしょうか?
それと、IOを重ねる意味は無いように思えるのですが、IO (IO Int) というのはどういう状態なのでしょうか?

質問ばかりで申し訳ありません。


次ページ
続きを表示
1を表示
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5381日前に更新/199 KB
担当:undef