Scalaz勉強会でEitherとValidationについて説明してきました。 2014年07月16日

Scalaz勉強会でEitherとValidationについて説明してきました。

Scalaz勉強会 - connpass

Scalaz勉強会を開催しました - scalaとか・・・

吉田さんも書いてますが、結構人が集まって良かったと思います。Scalazでこんだけ人が集まるっていうのはもちろん驚きですが、関数型系の大規模勉強会もあんまないですからね。もっと増えてほしいところです。

で、僕の発表というか解説ですが、

EitherとValidation - Scalaz勉強会

おそらく発表の中では断トツに簡単な内容だと思われるので、Scalazをまだ全然知らないって人におすすめです。

ただ、Eitherのfor文中のif文でおかしな挙動をすることについて、Monadなら問題が起きないというような記述がありますが、これは不正確でした。 吉田さんの昔の記事に詳しい解説があるようです。

HaskellのdoとScalaのfor式とEitherとMonadPlus - scalaとか・・・

Scalazは非常に難解なライブラリなのに勉強会で大人数が集まるということで、すぐに使えて役に立つような発表も必要だと考えてEitherとValidationを題材に選びました(それと募集開始から開催まで2週間弱しかないという時間の都合もありますが…)。 しかし今度は内容のレベルが低すぎて、普段関数型の人達は小難しいことばっか言ってるのに、聴衆に媚びて難易度下げすぎじゃないの?と思われる方もいらっしゃるかもしれません。 でも僕なりに一つ気をつけたことがあって、それは、もうモナド自体をテーマにすることはやめようってことです。

今回の発表でも、がくぞさんの発表が前にあるという前提ですが、「モナドだから便利」とか「モナドだから簡単に書ける」という表現をさらっと使っています。これまでによくあるような「モナド=難しいもの」を解説ということではなくて、 「あ、これモナドか → じゃあ、わかりやすい&つかいやすい」ということを前提に発表内容を組み立てています。これは関数型に慣れた人ならみんな持ってる感覚だと思います。 僕は、もうどんなに初心者向けの発表であっても、そういう感覚を聴衆と共有していきたいと思っています。

圏論からモナドを考えるような発表は全然あっていいと思いますが、モナドを過剰にピックアップするような解説はもういいんじゃないかという気がしてします。それが初心者を関数型に導いているとはどうも思えないんですよね。 変にメタファーで考えたり、これからはモナドだ!みたいに持ち上げたりするのは、入門者に配慮しているようで入門者を逆に遠ざけるんじゃないかと思います。 モナドは多少ややこしいですけど、特にScalaはIOモナドとかいらないですし、必要なときに便利なものとしてあってほしいなと思っています。