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....)ItereateesLensesZippers

Alé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.

questionAnswers(4)

yourAnswerToTheQuestion