私はモナドに頭を悩ませようとしていますが、これがコンパイルされない理由を説明できれば、理解が深まると思います。
module Main where
import Data.Maybe
import System.Environment
myFunc :: String-> Maybe String
myFunc x = Just x
main :: IO ()
main = myFunc "yo" >>= putStrLn
私が得るエラーは
blah.hs:9:10:
Couldn't match type `Maybe' with `IO'
Expected type: IO String
Actual type: Maybe String
In the return type of a call of `myFunc'
In the first argument of `(>>=)', namely `myFunc "yo"'
In the expression: myFunc "yo" >>= putStrLn
Maybe
問題は、 aを と一致させようとしていることにあるとIO
思いますが、Maybe'd 変数を IO にキャストする方法が完全にはわかりません。どんな助けでも大歓迎です!