私はscalazの| @ |を使用できるようにしたいと思います。私自身の応用ファンクタで。scalazで使用するカスタムApplicative Functorを作成するにはどのような方法が必要ですか?
例:
val spread: Source[Yield] = (y2 |@| y1)(_ - _)
これは、私はそれがファンクタですので、私はmap
を実装する必要が確信している
sealed abstract class Source[+A] {
def map[B](f: A => B): Source[B]
def unit[A](a: A): Source[A]
def pureList[A](la: List[A]): Source[A]
def zero[A]: Source[A]
def map2[A, B, C](as: Source[A], bs: Source[B], f: (A, B) => C): Source[C]
}
私のクラスです。
アプリケーションは、さまざまな方法で実装できます。たとえば、apply()
およびunit()
またはおよびunit()
を使用して実装できます。
ap
とpure
も必要ですか?
ご覧のとおり、何が必要なのか分かりません。
注意ご例えばあなたが唯一の '' Apply'ないApplicative'が必要であること。 –
@ LukaJacobowitz私は分かりません。メソッド 'apply'は必要ないのですか?' applyative'メソッドが必要ですか?それとも、私はそれをApplicativeファンクタの代わりにApplyファンクタと呼ぶべきであることを意味しますか? – Adrian