2011年12月11日日曜日

Apply

一昨日の分書いてない、昨日の分書いてない、今日の分書いてない・・・・・
そしてどんどん難しくなっていくScalazネタ。
実際危ない!

Apply

Applyは名の通り適用のための型クラスです。
しかし、ただ関数に値を適用するものではなく、コンテナ内の関数にコンテナ内の値を適用します。


FunctorBindApplyはApplysに定義されています。
FunctorとBindを暗黙的にとり、Applyを返します。

<*>, <**>, <***>, <****>, <*****>

Functorではmap、Bindでは>>=と代表する関数がありますが、Applyでは<*>です。
これは<*>の場合は先程の例の通りですが、<**>からはコンテナと関数、implicit parameterにFunctorをとります。
*が増えるごとに、コンテナの数、関数の引数が増えていきます。
ただし、値がNilやNone, Leftなどが含まれている場合はその値が返ります。


<|*|>, <|**|>, <|***|>, <|****|>

コンテナをわたし、コンテナに包まれたタプルを返します。
ただし、値がNilやNone, Leftなどが含まれている場合はその値が返ります。


*>, <*

>, <が指す値を返します。
ただし、値がNilやNone, Leftなどが含まれている場合はその値が返ります。


コピーアンドペースト重点。

これらの関数は型により動作が変わりますが、大体の型はこのような動きをします。

0 件のコメント:

コメントを投稿