I would like to announce learn-by-doing course/tutorial I have created.
You can find it at https://github.com/dehun/learn-fp
Course is test-driven - you have stubs which you have to implement and pass all unit tests.
It is something like write yourself mini scalaz/cats.
It covers type classes, functors, applicatives, monads, foldable/traversable, monad transformers, free monads.
I am working on adding co-functors and co-monads right now.
It was heavily inspired by NICTA course(haskell) - I thought that Scala community will benefit from something like that but on Scala.
I would appreciate any feedback. PRs and suggestions are very welcome.