2011年12月2日金曜日

Identity

一人Scalaz Advent Calendar

初日ということでIdentityから。

Identityの説明だけれど型クラスに関連するもの(===とか|+|とかほとんどの関数)やScalazのデータ構造(Validation,LazyTupleなど)に関するものは取り扱わないです。
後日EqualやSemigroup,Validationなどを説明するときに出てきます。

Identityは型パラメータAをとり、def value: Aという未定義の関数を持ちます。
パラメータAに様々な関数を提供するコンテナと考えてよいでしょう。


Identitys

IdentitysのmkIdentityによって全ての値はIdentityに暗黙の型変換することができます。
また、unMkIdentityによりIdentityをもとの値に戻すことも可能です。


unitalという謎のIdentity[Unit]が定義されているけど何に利用するかは不明。


Identity

??


簡単に言うとnullチェック。
nullだった場合は引数で与えた値が返る。


|>

関数に呼び出し側の値を適用する関数。
ちょっと意味がわからない、コードを見ましょう。


some, left, right, pair, squared

ある型に包む関数。
pairとsquaredは値のペアをタプルで返す。
def squared = pairみたいな定義だけどいるんですかこれ。


doWhile, whileDo

名前通りの関数。
関数と述語を渡す。


Scalazの型クラス、データ構造に関するものを抜くとこれだけ。

これだけではScalazの便利さがわからないと思うので、ぜひ続きも見て下さい!

2 件のコメント:

  1. > unitalという謎のIdentity[Unit]が定義されているけど何に利用するかは不明。

    Identity[Unit] 型のオブジェクトって、1つでよくていくつも生成されても無駄だから、どうせならライブラリ側で用意してvalで束縛しておいたほうがいいんじゃなイカ ?

    っていう配慮だろうか・・・?

    返信削除
  2. なるほど、それもそうですね。

    しかし、unitalの使い道とは一体・・・・・

    返信削除