Where I Was
How It Started: Scala
Blah[F[_], A, B], methods with confusing names that take params like
G[_], A → C, F[X → G[Y]], implementations like
F.boo_(f(x))(g)(x), and I'd just think “What the hell is this? How is this useful?”. I was used to methods that did something pertaining to a goal in its domain. This Scalaz code was very alien to me and yet, very intriguing. Some obviously-smart person spent time making the alphabet soup permutations, why?
FP: The Basics
Realisation: Confidence. Types vs Tests
pop(push(start, item)) == (start, item)which is essentially all you need to write; ScalaCheck will generates test data for you.