いまいちピンときていなかったから、少しだけ調べた。
Haskell/do notation - Wikibooks, open books for an open world
次のようなモナドっぽい値を返す関数があって、連続で利用するときに使うらしい。
monadicFun1 :: Maybe Int monadicFun1 = return 1 monadicFun2 :: Maybe Int monadicFun2 = return 2 monadicFun3 :: Num a => a -> a -> Maybe a monadicFun3 x y = Just (x + y)
// Monadを返す関数 myFun :: Maybe Int myFunc = monadicFun1 >>= \x -> monadicFun2 >>= \y -> monadicFun3 x y // myFunと同じ aFun :: Maybe Int aFun = do x <- monadicFun1 y <- monadicFun2 monadicFun3 x y
おわり