Free monads from scratch | Hacker News Reader