The best non-conventional introduction:
https://aphyr.com/posts/342-typing-the-technical-interview
> “Sure.”
> Move quickly, before he realizes his mistake.
This part always gets me.
Got me.
It works, but with modern haskell, one can use techniques that are less verbose.
On that note, I keep dreaming that one day, someone will make a Lisp with all the code generation goodies and Haskell-grade type system. That would be my dream language to code in.
(As it is right now, I mostly do C++17 in overtly-type-safe style at work, and typed Common Lisp on the side...)