読者です 読者をやめる 読者になる 読者になる

すごいHaskell読書会 in 大阪 2週目 #16.5

すごいHaskell読書会 in 大阪 2週目 #16.5 : ATND

前回は当日キャンセルなどで人数が少なかったため、同じ箇所(第14章前半)を再度読んでみる回でした。そのため、第 16.5 回になっています。ただし、発表者は変わり、今回は僕が発表しました。

すごいHaskell読書会 in 大阪 2週目 #16.5 発表資料

僕は前回で、どうも自分は分かっていないと感じたので、復習から始めて基本的な内容を押さえていくように考えました。とりあえず、自分で発表資料をまとめたということもあって、だんだん分かってきたような気がします。

do 記法

前回まででよく分かってなかった点のひとつが do 記法でした。>>= 演算子を使った記法と do 記法とが脳内で結びつかない感じでした。ただ、第14章で do 記法が何度も出てくるので、やっていたらだんだん慣れてきました。

Writer / Reader / State モナド

これらはどれも、通常の値に対して別の値を付加した文脈付き値を表すもの、と考えるとちょっと分かった気がしました。さらに以下のような話を聞いて、だいぶ納得感がありました。

  • Writer は書き込み専用の値を付加する。
  • Reader は読み込み専用の値を付加する。
  • State は読み書き可能な値を付加する。

演習問題

どうも演習問題を作るのが苦手です。問題を解くのが理解の助けになるというのは同意なんですが、そういう問題を自分で用意するのが大変だといつも感じています。問題が作れる人はすごい、ほんとに。

今回は、14.4 の終わりに「第13章で Maybe モナドを使った例を Either モナドで書き換えてみよう」という記述があったので、それをやってみました。単純な課題ですが、自分の手を動かして書いてみるのも大事かな、と思います。

ついでに、それって State モナドできれいに書けるんじゃないか、とも思いました。ただ、すでに失敗を表現するモナドを使っているところにさらにモナドを導入しようとすると、さらに進んだ概念がいるらしいです。それはこの本を読み終わったら勉強してみたいと思います。