我对隐式scalaz monad使用了理解,但是当我提取元组数据时,它会输出
value filter is not a member of type parameter M[...]
代码如下:
implicit val monad: Monad[M] = ...
for{
(a,b) <- getABMonad() // error: value filter is not ...
} yield a + b
其中getABMonad(): M[(Int, Int)]
。 M
是一个类型参数,可以是几项,例如Identity,EitherT或其他标准monad。我使用implicitly[Monad[WhatEverMonadImUsing]]
来获取它,所以我没有实现我自己的monad API。
From what I understood,为了理解,请使用filter
api取消元组数据。所以似乎scala.Monad没有提供它。我可以这样写来解决问题:
implicit val monad: Monad[M] = ...
for{
aAndB <- getABMonad()
(a, b) = aAndB
} yield a + b
是否有避免此错误行的实用方法?
[scalaz 2.10-7.0.2]