Я часто обнаруживаю, что мне нужны экземпляры класса типа 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 теперь предоставляет экземпляр монады для Parser
.)
И так далее...
Эти экземпляры почти всегда очень общего назначения, и я уверен, что многие из нас писали их множество раз. То, что я ловлю с этим вопросом, - это какой-то агрегатор или информационный центр для экземпляров класса типа Scalaz. Я не уверен, что такая вещь существует — я определенно не смог найти ничего подобного, — но даже просто набор ссылок на сообщения в блогах, репозитории GitHub или другие ресурсы были бы мне полезны.
Я бы предпочел экземпляры Scalaz 7, но я возьму все, что смогу.
N
ваши самые любимыеxy
дляde
f. Здесьxy
= экземплярыde
= scalaz. - person ron   schedule 15.09.2012