【问题标题】:How to specify that abstract types must implement certain typeclasses in scalaz?如何指定抽象类型必须在 scalaz 中实现某些类型类?
【发布时间】:2015-07-30 15:06:38
【问题描述】:

我想编写一个简单地将两个 monad 绑定在一起的函数,而无需预先确定 monad 的确切类型(列表、状态 monad 等)。在我看来,这种通用性是类型类如此强大的原因,我应该能够使用 Scalaz 来做到这一点。这是我的想法:

def f[F[_], A](m1: F[A], m2: F[A]): F[(A,A)] = 
  m1 >>= { a: A => m2.map{ b: A => (a,b) }}

如何指定 F[_] 必须实现 Monad 类型类,以便我可以在我的函数中使用 >>=?写F[_] <: Monad 似乎不是正确的方法,因为作为monad 的State、List 等类型不会扩展Monad 特征。

【问题讨论】:

    标签: scala monads scalaz


    【解决方案1】:

    听起来上下文边界正是您正在寻找的。 f[F[_] : Monad...见What are Scala context and view bounds?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-31
      相关资源
      最近更新 更多