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

2022-09-04 23:04:38

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

Shapeless 的幺半群实例几乎免费为您提供具有适当类型成员的 case 类的幺半群实例HList

例如,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.9(和等)的monad实例对于各种事情都非常有用。PromisePromise[Either[Throwable, _]]

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

等等...

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

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


答案 1

Scalaz 实例的社区维基

Scalaz 7 个实例


答案 2

推荐