【发布时间】:2014-07-15 08:38:25
【问题描述】:
我目前正在将一些代码从传统 Scala 移植到 Scalaz 风格。
在我的大部分代码中,在公开的 API 签名中使用 Seq 特征而不是直接使用具体类型(即 List、Vector)是相当普遍的。然而,这给 Scalaz 带来了一些问题,因为它不提供 Bind[Seq] 类型类的实现。
即这将正常工作。
List(1,2,3,4) >>= bindOperation
但这不会
Seq(1,2,3,4) >>= bindOperation
失败并出现错误could not find implicit value for parameter F0: scalaz.Bind[Seq]
我认为这是 Scalaz 中的一个有意设计决定 - 但是不确定如何先行的预期/最佳实践。
我是否应该根据需要将代码直接写入 List/Vector,而不是使用更灵活的 Seq 接口?还是我应该简单地定义我自己的 Bind[Seq] 类型类?
【问题讨论】:
-
不过有一个
IndexedSeq的 monad 实例。
标签: scala monads typeclass scalaz