Search code examples
scalafunctional-programmingscalazscalaz7

Finding my way through Scalaz


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 and Monad traits,
  • new monads such as Validation (edit: turns out it is only an applicative)
  • monad transformers (OptionT, EitherT....)
  • Itereatees
  • Lenses
  • Zippers

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.


Solution

  • I would recommend the excellent series Learning scalaz by Eugene Yokota on Scalaz 7. The author follows the structure of Learn You a Haskell for Great Good. The approach is systematic and very pedagogic.