2011年12月22日木曜日

Reducer, Generator

昨日は #rpscala の忘年会がありました。
技術的な話がいっぱいで楽しかったです。
私も頑張らねば・・・!

Reducer

ある型CをMonoidである型Mへとマッピングするものです。

Identity#unit

値をモノイドへ変換します。


Identity#cons, Identity#snoc

値と、モノイドである値を結合します。


Identity#unitPure

モノイドへ変換した後、値を包みます。


MA#foldReduce

指定した型にまとめます。


Generator

Reducerを使ってコンテナの要素をまとめます。

GeneratorオブジェクトにはGeneratorのインスタンスが定義されており、Generator#reduceの実装が違います。

Generator#toとGenerator#fromはReducerと初期値とコンテナを渡します。
Generator#reduceはZeroが初期値となります。


Reducerのインスタンスはデフォルトでimplicit parameterではないので、いちいち宣言しないといけません。
unitやconsは普通に使える関数なだけに、とてももったいなく感じます。
しかし、Scalaz7では全てimplicitになっているので、Reducer関連の関数は使いやすくなるだろうと思います。

0 件のコメント:

コメントを投稿