do 記法
do 記法は IOモナドだけでなく、他のモナドにも使える
*Main Lib> Just 3 >>= (\x -> Just (show x ++ "!")) Just "3!"
入れ子にする
*Main Lib> Just 3 >>= (\x -> Just "!" >>= (\y -> Just (show x ++ y))) Just "3!"
let式と似ている
*Main Lib> let x = 3; y = "!" in show x ++ y "3!"
letと異なる点は文脈を持っているかどうか
*Main Lib> Just 3 >>= (\x -> Nothing >>= (\y -> Just (show x ++ y))) Nothing
Nothing
を途中で与えるとちゃんとNothing
を返す
この式をスクリプト風に書きなおしてみる
foo :: Maybe String foo = Just 3 >>= (\x -> Just "!" >>= (\y -> Just (show x ++ y)))
ラムダ式が煩わしいので do
を使って書き直す
foo :: Maybe String foo = do x <- Just 3 y <- Just "!" Just (show x ++ y)
Maybe値がNothingかどうか気にせずMaybe値から生の値がとれそうな書き方になっている。 もし、Nothingだった場合は、do 式全体がNothingになる。
所感
doで糊付けしている中身がわかった。

- メディア:
- 購入: 4人 クリック: 9回
- この商品を含むブログを見る