モナド
11.3 リストモナド
リストモナドも難しい。
分かったようでいて分からないもやもや感。
時間をかけて、考えてみる。
具体例で試してみる
いつものようにNonsenseな例を作ってみます。
{-- 階乗のリストを作成する。 階乗のリストって何ていうんだろう? --} fact :: Int -> [Int] fact 0 = [] fact x = x : (fact (x-1)) main = do print $ fact 10 -- 階乗のリストの各項目に対してさらに階乗のリストを作る print $ fact 10 >>= fact print $ return 10 >>= fact >>= fact >>= fact
自分で作ってみると、何となく分かってきます。
外から見るとMaybeモナドと同じ構造になっていますね。
(>>=)とreturn。
まさしく演算をつないでいます。