My recommended order for learning:


Functor, Applicative, Monad

Alt, Alternative, MonadPlus

Foldable, Traversable

Bifunctor, Bifoldable, Bitraversable

Contravariant, Profunctor

Strong, Choice

Lens, Prism, Iso, Traversal

Implement your own Van Laarhoven lenses. It's difficult, but tel/sdbo has a tutorial here: codewars.com/users/tel/authored (called Lensmaker)

References/examples for aforementioned typelcasses:

https://github.com/ekmett/semigroupoids (Alt)

https://github.com/ekmett/either/blob/master/src/Data/Either/Validation.hs (Foldable, Traversable, Bi*, Profunctor, Choice, Iso)

https://www.fpcomplete.com/school/to-infinity-and-beyond/pick-of-the-week/profunctors (Contravariant, Profunctor)

https://www.youtube.com/watch?v=Go-RR_2I9CU my monad transformers talk has connected some dots for people on higher kinded types and type variable application (relevant to Contravariant and (->))

https://github.com/ekmett/lens/wiki/How-can-I-write-lenses-without-depending-on-lens%3F (Lens, Prism, Iso, Choice, Profunctor)

Hope this helps,
Chris Allen





On Mon, Nov 17, 2014 at 5:48 PM, Gautier DI FOLCO <gautier.difolco@gmail.com> wrote:
Hi all,

I'm using Haskell since nearly three years now and I think I have well understood that types are the most important part of our programs.
I have looked all around to learn as many datatypes/typeclasses as possible.
But I suffer for a lack of direction to pursue my learning. I have well understood Prelude's one and some random ones (include someones for Category Theory), but I can't handle Kmett's code. Are there some intermediates abstractions I can learn? (For example in some librairies).

Thanks by advance for your help.
Regards.

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe