Example on how to build a program that looks and feels imperative in Haskell yet is completely functional using the RWS monad and lenses.
I was reading Gabriel Gonzales's blog on lenses Program Imperatively Using Haskell Lenses and following along, when I decided to keep running with his example and try a few things I've been wanting to try, and this is the result.