2012年12月1日土曜日

Isomorphism

Scalaz Advent Calendar!

Isomorphism


あるcase classに対してMonoidを定義したいとき、大体のものはTupleのMonoidのインスタンスが使えると思います。
こんなときにIsomorphismMonoidが使えます。

Monoid以外の型クラスを定義したい時もこんな感じで使える。

このように、データ構造が同じもののインスタンスを流用する場合はIsomorphismが使えます。

<=>[A, B]はIso[Function1, A, B]のtype aliasで、to: A => Bとfrom: B => Aを定義します。
IsomorphismMonoidなどの型クラスは、toを使って実装されていることに注意しましょう。

0 件のコメント:

コメントを投稿