Encontrando meu caminho através de Scalaz [duplicado]
Duplicata Possível:
Boa introdução scalaz
Eu gostaria de aprender mais sobre Scalaz, possivelmente usando o Scalaz7 para evitar a religação do meu cérebro quando ele for declarado estável. Meu problema é que o Scalaz contém muita funcionalidade. Embora a maior parte deva ser independente de outras partes, gostaria de ter uma visão geral da funcionalidade global oferecida por Scalaz e como ela é organizada. Até onde eu sei, Scalaz oferece, entre outras coisas,
Functor
, Applicative
eMonad
traçosnovas mônadas comoValidation
(Edit: Acontece que é apenas um aplicativo)transformadores monad (OptionT
, EitherT
....)Itereatee
sLens
esZipper
sAlém disso, há muitas conversões implícitas e novos construtores, comosome
que se sobrepõem à biblioteca padrão, mas se comportam melhor com relação aos tipos
:type Some(3) // Some[Int]
:type some(3) // Option[Int]
Eu tenho uma compreensão básica da maioria dessas construções, mas não sou fluente com nenhum dos conceitos.
Você tem alguma sugestão em que ordem para aprender a biblioteca, quais dependências lógicas existem entre os módulos? Mais geralmente, onde posso encontrar uma visão geral de alto nível da biblioteca?
EDITAR Parece que a maioria das respostas é direcionada para aprender os componentes básicos da programação funcional, como mônadas, então tentarei ser mais preciso. Eu tenho um conhecimento básico de Haskell e um conhecimento de matemática, então minha questão não está relacionada à teoria de categorias ou programação funcional básica.
Meu problema é que Scalaz é uma enorme biblioteca. Eu não sei o que encontrar onde, quais métodos estão disponíveis ou úteis em vários tipos de dados. O que eu realmente preciso é de um mapa que, por exemplo, me diga que quando eu quiser iterar sobre os recursos que precisam ser descartados, eu posso querer considerar os iteratos e que tipo de operações eu posso fazer com isso. Mais como uma panorâmica da funcionalidade disponível com a biblioteca.