2012年8月3日金曜日

クラウド温泉3.0 (13) / Monad

クラウド温泉3.0@小樽のセッション「Monadicプログラミング・マニアックス」で使用するスライドのネタ検討その13です。

Monadicプログラミングをテーマにしているので、主役はやはりMonadです。

Monadについては、Scala Tipsでも中心的なテーマとして取り上げてきたので、この中から今回のセッションの趣旨にそったものを集めてくる感じになります。

Monadicプログラミングをパイプライン・プログラミングと見立てると、以下のような記述方式が候補です。

この中でMonadを使っているのは3, 4, 5となります。パイプラインという観点からは、Monadを使っていないものを排除しても実用的なメリットはないので、合わせてMonadicプログラミングと呼ぶのが本セッションでの定義です。

Scalaにおけるモナドについては、以下の記事が参考になるかもしれません。

Monadの実装に用いられているScalazの型クラスは以下の記事で取り上げています。

Monadの具体的な使用方法として、以下のクラスを取り上げてきました。

モナドが提供する計算文脈を使うことで、計算文脈の提供するサービスを暗黙的に利用しながら動作する処理を、パイプラインのセマンティクスで処理を簡潔に記述することができます。

パイプラインの表層を流れるデータと演算、さらにパイプラインの裏側で暗黙に行われるデータと演算が疎結合になっているのが、モナドの醍醐味だと思うので、そのあたりにフォーカスしていきたいと思います。

ノート

パイプライン・プログラミングという観点からは重要な切り口ではないので、セッションでは取り上げないと思いますが、Scala TipsではfoldとMonadの組み合わせについても取り上げています。その他、Monadを対象としたメソッドが色々あるので、Scala Tipsで随時取り上げていきたいと思います。

0 件のコメント:

コメントを投稿