セカイノカタチ

世界のカタチを探求するブログ。関数型言語に興味があり、HaskellやScalaを勉強中。最近はカメラの話題も多め

「第2期 第26回 H本読書会 in 秋葉原」を終えて #readhbon #haskell

第2期第26回H本読書会を開催しました。

第14章「もうちょっとだけモナド」を読みました。

H本読書会とは?

すごいHaskellたのしく学ぼう!

すごいHaskellたのしく学ぼう!

こちらの本を輪読する読書会です。

Haskellを覚えると色々楽しいことがあるんじゃないかと始めた読書会で、Haskellに関する本を少しずつ読んでいくという工夫のないスタイルが売りです。(汗

第14章「もうちょっとだけモナド」途中から

P.346の「join関数」から読みました。

join

joinというのは、↓こういう関数でモナドにモナドが包まれた物を一枚剥ぐ関数です。

join :: (Mondad m) => m (m a) => m a
join mm = do
  m <- mm
  m

つまり、Just (Just 3)をJust 3にします。3を[3]にします。

一見地味な関数ですが、凄く重要です。というのが、モナドの定義というのが、ドンドン入れ子構造にしていくことが出来ること(returnの役目)と入れ子構造になったデータを外していくことが出来ること(joinの役目)の組み合わせによって実現されるからです。

powerset

それ以外にも、この本の難所の一つ(と僕が勝手に思っている)powersetの定義と振る舞いについて、話しました。

文章で説明するのは、難しいですが、リストの各要素に対してTrueのケースとFalseのケースで場合分けして、そのそれぞれのケースに対して次の要素を場合分けして、という形で、二分木が生成され全ての組み合わせがフラット化して帰ってくるというイメージです。

こちらの記事がわかりやすく、参考にさせていだきました。

akiradeveloper.hatenadiary.com

その他

それ以外にも、逆ポーランド記法電卓のMaybeモナド版であるとか、確率モナドの定義であるとか、盛りだくさんの内容だったのですが、14章をこれ以上続けるのもつらいので、時間を延長して、読み終わりました。(^^;

次回、第27回 第15章「Zipper」

次回は、12/9に開催です。

ついに最終章に突入します。

ラスボス感です。

恐らく、最後まで読み終わると思います。

是非、これを機会に一緒に勉強しましょう!

readhbon.doorkeeper.jp