如何在理解中消除(隐含)scalaz Monad?

时间:2018-09-25 12:19:15

标签: scala tuples monads scalaz for-comprehension

我对隐式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]

0 个答案:

没有答案