Possible Duplicate:
Good scalaz introduction
I would like to learn more about Scalaz, possibly using Scalaz7 to be avoid rewiring my brain once it is declared stable. My problem is that Scalaz contains a lot of functionality. While most of it is meant to be independent of other parts, I would like to have a bird's eye view of the global funcitonality offered by Scalaz and how it is organized. As far as I know, Scalaz offers, among other things,
Functor
,Applicative
andMonad
traits,- new monads such as
Validation
(edit: turns out it is only an applicative) - monad transformers (
OptionT
,EitherT
....) Itereatee
sLens
esZipper
s
Added to this there are a lot of implicit conversions, and new constructors such as some
which overlap with the standard library but behave better with regards to types
:type Some(3) // Some[Int]
:type some(3) // Option[Int]
I have a basic grasp of most of these constructions, but I am not fluent with any of the concepts.
Do you have any suggestion in what order to learn the library, what logical dependencies exist between modules? More generally, where can I find a high level overview of the library?
EDIT It seems that most answers are directed towards learning the basic components of functional programming, like monads, so I will try to be more precise. I have a basic knowledge of Haskell and a mathematician background, so my issue is not related to category theory or basic functional programming.
My problem is that Scalaz is a huge library. I do not know what to find where, what methods are available or useful on various data types. What I really need is a map that, for instance, will tell me that when I want to iterate over resources that need to be disposed, I may want to consider iteratees and what kind of operations I can do with that. More like a panoramic of the functionality available with the library.
just
an Applicative Functor (in scalaz7 it doesn't even have flatMap) – Sorcha