昨日は #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 件のコメント:
コメントを投稿