when you think about it, not toooo surprising. Haskell's undeniable killer app is parsing and compilation, so pandoc was pretty much a project destined for Haskell if I ever saw one :)
you don't need an ordered JSON for this. Just make sure that your equality tests ignore ordering, or that your and hash functions will hash two JSON objects with the same key but different order to the same hash.
GoL wasn't used here because of any value or analogy... it's used as an example of how a simple set of rules can generate complex behavior. GoL can display complex behavior, but it would be a stretch to to say that the rules governing it are complex. If you think GoL is too simplistic, you are agreeing with the original comment.
You can programmatically put statements together, and manipulate them like real values. But that doesn't mean that pure simulated execution has to be a part of the API :)
yea, but the struggle isn't really quite with monads, but with syntax. properly understanding the syntax for do notation with use in IO does not require an understanding of monads.