<-
型ヒントを追加するとデバッグに役立つと思いますが、 on および IO アクションを使用した結果でそれを行う方法がわかりません
action :: IO ()
foo :: String --doesnt't compile
foo <- getLine
<- は宣言ではないため、それはできません。次のいずれかを実行できます。
action :: IO ()
action = do
foo <- getLine :: IO String
...
または、次の場合{-# LANGUAGE ScopedTypeVariables #-}
:
action :: IO ()
action = do
foo :: String <- getLine
...
完全を期すために、追加したいと思います
action :: IO ()
action = do
foo <- getLine
let bar :: String
bar = foo
print bar
これは不格好ですが、GUI をプログラミングしている場合に発生する可能性のある IO モナドに陥った場合に役立ちます。
で-XScopedTypeVariables
、持つことができます(foo :: String) <- getLine
。