【发布时间】:2017-08-15 14:16:36
【问题描述】:
我希望能够使用 scalaz 的 |@|在我自己的应用函子上。
示例:val spread: Source[Yield] = (y2 |@| y1)(_ - _)
这是我的课
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]
}
我确定我必须实现 map,因为它是一个函子。
应用程序可以通过多种方式实现:例如使用apply() 和unit() 或map2() 和unit()。
我还需要ap 和pure 吗?
如您所见,我不确定需要什么。
【问题讨论】:
-
请注意,对于您的示例,您只需要
Apply而不是Applicative。 -
@LukaJacobowitz 我不明白;你的意思是我不需要方法
apply但我需要方法applicative?或者你的意思是我应该称它为 Apply 函子而不是 Applicative 函子
标签: scala functional-programming scalaz applicative