Я часто нахожусь в желании (а затем обычно пишу) Scalaz типа экземпляров класса для классов в других Scala или Java-библиотеках, Чтобы привести несколько примеров:
Моноидный экземпляр для Shapeless HList
предоставляет вам моноидные экземпляры для классов case с правильно набранными членами почти бесплатно.
Пример прикладного функтора для 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 Promise
(и Promise[Either[Throwable, _]]
и т.д.) чрезвычайно полезен для всех видов вещей.
Приложение аппликативный функтор для стандартной библиотеки Parser
делает аппликативный анализ более кратким и элегантным. (Я только заметил, что Scalaz 7 теперь предоставляет экземпляр monad для Parser
.)
И так далее...
Эти примеры почти всегда очень универсальны, и я уверен, что многие из нас много писали много раз. То, что я ловушку с этим вопросом, - это какой-то агрегатор или центр обмена данными для экземпляров класса типа Scalaz. Я не уверен, что такая вещь существует - я, конечно же, не смог найти ничего подобного, но для меня было бы полезно только сбор ссылок на сообщения в блогах, репозитории GitHub или другие ресурсы.
Я бы предпочел Scalaz 7 экземпляров, но я возьму все, что могу.