セカイノカタチ

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

マーブルワーズ

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

こちらは Haskell Advent Calendar 2015 - Qiita の 21 日目の記事です。

昨日の記事は、String diagram のすすめ - PS でした。

H本読書会とは?

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

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

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

第2期ということで、去年の11月に始めたのですが、1年以上掛けて1冊読み終わりました。

大勢の方に参加いただいて、なんとか全て読みきることが出来て感無量です。

ありがとうございました。(__)

本の感想

今回、輪読対象とした「すごいHaskell楽しく学ぼう!」ですが、とても良い本です。

実は、H本読書会を開催する以前に2回読んでいたので、今回3度めの読書となったのですが、毎回発見があり、細かい部分で誤解していたところも認識を新たにすることが出来てとても良かったです。

とはいえ、内容は初心者よりもやや難しい感じで、第1期の「ふつうのHaskellプログラミング」を読んでいて3回読みなおしたのでだいぶ理解できていますが、初見だと厳しいかもしれません。

折角なので、個人的な高難易度ポイントについて挙げておきたいと思います。

mapM, mapM_

P.172に出てきます。

この時点でモナドを説明していないので、「リストに対してI/Oアクションを返す関数をマップする」という仕組みが理解しにくかったです。

華麗にスルーして13章、14章でモナドを学んでから読み返す事をオススメします。(^^;

リストに対してマップするのが難しいですが、結局はモナドを返すモナド計算なので、あまり深く記にする必要はないです(おぃ

ファンンクターとしての関数

P.231です。この本の中でも屈指の難しさでは無いでしょうか。><

今まで、構文の一部だと信じて疑わなかった(->)が、ファンクターって!?!?ファッ!?

っと、思わずパニクる場面です。(^^;

一応、第15回に解説のスライドがあります。が、解りにくいかも。

sequenceA

P.253からのsequenceAの説明は、初見だとモチベーションもよく判らず、???となりますね。(^^;

Applicativeの動きも、すぐには理解しにくかったので、その応用編ということで余計です。

ここでの説明は、「関数のリストに引数を適用する」処理を行っているだけなのですが、「関数のリスト」がそもそも、(?_?)だと思われます。

関数も値であり、リストに入れたりすることも「当然」出来るのですが、この辺の感覚が直感的にわかってくると脱Haskell初心者への道がひらけるかもしれません。

スタックと石

P.333からのスタック操作関数も初心者殺しなんじゃないかと思います。

次に続くStateモナドの仕組みを説明しているので、Stateモナドと合わせて何回も読んだり書いたり動かしたりして覚えましょう。

Stateモナドがわかればモナドがわかる - セカイノカタチでも書きましたが、ここが理解できれば、モナドを理解したと言っても過言ではありません。*1

powerset

P.351に出てくる関数です。

リストから冪集合を驚くべきシンプルな関数で実装しています。不思議!(?_?)???

H本読書会では、皆でソースコードを追っかけたり別のブログを参考にしたりして、理解しました。

理解できたと思う。たぶん。きっと。

filterMの実装がかっこ良すぎて目眩がします。

まとめると

上に挙げた箇所ぐらいが、難解なポイントですが、それ以外の部分は多分そんなに難しくないんじゃないかと思います。

もし、質問とかあれば解る範囲で理解のお助けをしたいと思います。

会の感想

本当に勉強熱心な参加者に恵まれて、大変光栄でした。

開催当初は、手際も悪く色々迷惑をお掛けしましたが、中盤ぐらいからは感覚もつかめて安定して運営できたのではないかと思います。

後半は、流石に参加者が減って寂しい回もありましたが、概ね10名前後の方に参加いただけたので幸せでした。

IT勉強会カレンダーに参加したのですが、スタンプカードを集めた結果がアナウンスされない・・・。(^^;

開催記録一覧

前回のH本読書会(第1期)では、何の記録もしておらず、何も残らなかったので。(^^;

反省を踏まえて、今回は開催記録をつけようと思い(Googleにも引っかかりやすくなるし)、このブログに毎回の会の様子を簡単にまとめていました。

良かったらご参照ください。

日付 進捗
第一回 2014/11/12 イントロダクション、第1章読了
第二回 2014/11/26 第2章読了、第3章途中
第三回 2014/12/10 第3章読了
第四回 2014/01/07 第4章読了
第五回 2014/01/21 第5章途中
第六回 2014/02/04 第5章読了
第七回 2014/02/18 第6章途中
第八回 2014/03/04 第6章読了、第7章途中
第九回 2014/03/18 第7章途中
第10回 2014/04/01 第7章読了
第11回 2014/04/15 第8章読了
第12回 2015/05/13 第9章途中
第13回 2015/05/27 第9章途中
第14回 2015/06/10 第9章読了、第10章読了
第15回 2015/06/24 第11章途中
第16回 2015/07/08 第11章途中
第17回 2015/07/22 第11章途中
第18回 2015/08/05 第11章読了、第12章途中
第19回 2015/08/19 第12章読了
第20回 2015/09/02 第13章途中
第21回 2015/09/16 第13章途中
第22回 2015/09/30 第13章途中
第23回 2015/10/14 第14章途中
第24回 2015/10/28 第14章途中
第25回 2015/11/11 第14章途中
第26回 2015/11/25 第14章読了
第27回 2015/11/25 第15章読了

次回、第3期

今のところ、時期も内容も未定ですが、また皆でH本を読みたいと思います!

是非、次回の開催時もご参加ください。(__)

また、読みたい本や要望などもお待ちしております!

それでは。

*1:マサカリ注意