Hi, author here. I agree that straight away throwing a bunch of language extensions without an explanation of why we need them at all wasn't a good idea. The original blog post was written in literate Haskell, that's the reason why the code is organized that way.
I will think about rearranging the code blocks or add more explanations to make it all fit more naturally. Thanks for your feedback!
I will think about rearranging the code blocks or add more explanations to make it all fit more naturally. Thanks for your feedback!