13

我经常发现自己想要(然后通常编写)其他 Scala 或 Java 库中的类的Scalaz类型类实例。仅举几个例子:

Shapeless的monoid实例几乎免费HList为您提供具有适当类型成员的案例类的 monoid 实例。

例如, Lift的应用函子实例Box允许您对框列表进行排序:

scala> val boxen: List[Box[Int]] = Full(1) :: Full(2) :: Full(3) :: Nil
boxen: List[net.liftweb.common.Box[Int]] = List(Full(1), Full(2), Full(3))

scala> boxen.sequence
res0: net.liftweb.common.Box[List[Int]] = Full(List(1, 2, 3))

Dispatch 0.9Promise(和等)的monad 实例对Promise[Either[Throwable, _]]各种事情都非常有用。

标准库的应用函子实例Parser使应用解析更加简洁和优雅。(我刚刚注意到 Scalaz 7现在为 . 提供了一个 monad 实例Parser。)

等等...

这些实例几乎总是非常通用的,我相信我们很多人都写过很多次。我在这个问题上寻找的是某种用于 Scalaz 类型类实例的聚合器或票据交换所。我不确定这样的东西是否存在——我当然找不到任何类似的东西——但即使只是博客文章、GitHub 存储库或其他资源的链接集合对我来说也是有用的。

我更喜欢 Scalaz 7 实例,但我会尽我所能。

4

1 回答 1

5

Scalaz 实例的社区 wiki

Scalaz 7 实例

于 2012-09-14T19:58:26.803 回答