我目前正在将一些代码从传统的Scala移植到Scalaz风格.
在我的大多数代码中,在我公开的API签名中使用Seq特征而不是直接使用具体类型(即List,Vector)是相当常见的.但是,这给Scalaz带来了一些问题,因为它没有提供Bind [Seq]类型类的实现.
即这将正常工作.
List(1,2,3,4) >>= bindOperation
Run Code Online (Sandbox Code Playgroud)
但这不会
Seq(1,2,3,4) >>= bindOperation
Run Code Online (Sandbox Code Playgroud)
失败了 could not find implicit value for parameter F0: scalaz.Bind[Seq]
我认为这是Scalaz中的故意设计决定 - 但我不确定如何在之前的预期/最佳实践.
我是否应该将代码直接写入List/Vector而不是使用更灵活的Seq接口?或者我应该简单地定义我自己的Bind [Seq]类型类?