It sounds like the author just played around with Haskell for fun. You run up against the types of issues discussed in this post when you don't have the option of avoiding them. If you are working on a project where the goal is to create a piece of software that functions in a particular way, you will inevitably run up against some road blocks that require you to gain a deeper understanding of how your tools work. If the goal is to play with the language and learn for the sake of learning, it is far too easy to change course whenever you approach a difficult problem.