其他库的Scalaz类型实例的总结

时间:2012-09-14 14:10:17

标签: java scala monads scalaz typeclass

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

ShapelessHList的monoid实例几乎免费为您提供monoid instances for case classes with appropriately typed members

LiftBox的应用仿函数实例允许您对一系列框进行排序:

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(以及Promise[Either[Throwable, _]]等)的monad实例对各种事物都非常有用。

标准库Parser的{​​{3}}使得应用解析更加简洁和优雅。 (我刚注意到Scalaz 7 applicative functor instance。)

等等......

这些实例几乎总是非常通用的,我相信很多人已经写了很多次。我正在为这个问题捕获的是Scalaz类型类实例的某种聚合器或交换所。我不确定这样的事情是否存在 - 我当然无法找到类似的东西 - 但即使只是一组链接到博客文章,GitHub存储库或其他资源对我也很有用。

我更喜欢Scalaz 7实例,但我会采取任何我能得到的。

1 个答案:

答案 0 :(得分:5)

Scalaz实例的社区维基

Scalaz 7实例