PS Pretty much all my knowledge of this subject (and the pretty printing interpreter example in particular) comes from here: <a href="http:&#x2F;&#x2F;www.haskellforall.com&#x2F;2012&#x2F;06&#x2F;you-could-have-invented-free-monads.html" rel="nofollow">http:&#x2F;&#x2F;www.haskellforall.com&#x2F;2012&#x2F;06&#x2F;you-could-have-invented...</a>