Today we're going to take a peek at the Update monad! It's a monad which was
formalized and described in Update Monads: Cointerpreting Directed
Containers by Danel
Ahman and Tarmo Uustalu. Most folks probably haven't heard of it before, likely
because most of what you'd use it for is well encompassed by the Reader,
Writer, and State monads. The Update Monad can do everything that Reader,
Writer, and State can do, but as a trade-off tends to be less efficient at each
of those tasks. It's definitely still worth checking out though; not only is it
interesting, there are a few things it handles quite elegantly that might be a
bit awkward to do in other ways.