How Does Free Make Any Functor a Monad?
maxhallinan.com