" was trying to express my frustration at not being able to insert a little impure code temporarily to tweak behaviour and help with debugging."
Why would you want to do that? Haskell is a functional language. You evaluate expressions, which can be done nicely in GHCI.
When I first learned Haskell, I was also trying to apply my procedural programming habits. Looking back, the pain was a sign of doing it wrong. Once I learned to look at solutions 'functionally', it turned out not to be a big deal, and the resulting code is arguably better. However, it does sometimes become painful going back to procedural languages.