如何指定抽象类型必须在scalaz中实现某些类型类?

如何指定抽象类型必须在scalaz中实现某些类型类?,scala,monads,scalaz,Scala,Monads,Scalaz,我想写一个函数,它只将两个单子绑定在一起,而不需要预先确定单子列表、状态单子等的确切类型。。在我看来,这种泛型性是TypeClass如此强大的原因,我应该能够用Scalaz实现这一点。以下是我的想法: def f[F[_], A](m1: F[A], m2: F[A]): F[(A,A)] = m1 >>= { a: A => m2.map{ b: A => (a,b) }} 如何指定F[uz]必须实现Monad typeclass,以便在函数中使用>>=?写F[

我想写一个函数,它只将两个单子绑定在一起,而不需要预先确定单子列表、状态单子等的确切类型。。在我看来,这种泛型性是TypeClass如此强大的原因,我应该能够用Scalaz实现这一点。以下是我的想法:

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

如何指定F[uz]必须实现Monad typeclass,以便在函数中使用>>=?写F[\u]听起来上下文边界正是您要寻找的。单子,单子参见