I came to an understanding of monads the other day thinking about fail-and-reverse-on-error applications like messing with the filesystem. I have an example of this (and a simple implementation in OCaml) if it helps you [0]. After my "breakthrough", I've been seeing monads everywhere; everything is a nail.
[0] https://github.com/eatonphil/monad