17. モナド則
• return x >>= f == f x
• m >>= return == m
• (m >>= f) >>= g == m >>= (¥x -> f x >>= g)
18. モナド則(Haskellのdo記法で)
• do { v <- return x; f v } = do { f x }
• do { v <- m; return v } = do { m }
• do { x <- m;
y <- f x;
gy}
= do { y <- do { x <- m;
f x };
gy}