Hi.
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.
Btw: I am persuing a sligtly different path by writing a tutorial on arrow-like code (promoting point-free programming) that closely follows FP of John Backus. Monadic programming is pointful. I claim that Scala (I use Dotty) comes to the rescue to spice the pointfree programming style with a convenient programming DSL.
Personality, I don’t see any advantages in passing the implicit as a bound and then summoning it again with implicitly, rather than directly as a named implicit parameter.
My own rule of thumb is to use the bound notation if and only if you only ever use it implicitly.