创建空列表的 Monad 实例
Create Monad Instance of empty list
我有以下功能:
def map2[F[_]: Monad, A,B,C](fa: F[A], fb: F[B])(f: (A,B) => C): F[C] =
for {
v1 <- fa
v2 <- fb
} yield f(v1,v2)
def sequence[M[_]: Monad, A](lma: List[M[A]]): M[List[A]] =
lma.foldRight(List.empty[A].point[M])((z,a) => map2(z,a)(_::_))
是否有更惯用的 scalaz 方法来创建
的实例
List.empty[A].point[M]
我试过Nil.point[M]
,但没用。
您可以使用 nil[A].point[M]
,其中 nil
是 Scalaz 提供的一种方法,作为 Nil
的替代方法,具有更合适的类型。我想你可以称它为更地道,但在我的书中 List.empty[A]
完全没问题。
我有以下功能:
def map2[F[_]: Monad, A,B,C](fa: F[A], fb: F[B])(f: (A,B) => C): F[C] =
for {
v1 <- fa
v2 <- fb
} yield f(v1,v2)
def sequence[M[_]: Monad, A](lma: List[M[A]]): M[List[A]] =
lma.foldRight(List.empty[A].point[M])((z,a) => map2(z,a)(_::_))
是否有更惯用的 scalaz 方法来创建
的实例List.empty[A].point[M]
我试过Nil.point[M]
,但没用。
您可以使用 nil[A].point[M]
,其中 nil
是 Scalaz 提供的一种方法,作为 Nil
的替代方法,具有更合适的类型。我想你可以称它为更地道,但在我的书中 List.empty[A]
完全没问题。