What interpretation justifies GHCi going into an uninterruptible state at this point?
This is really bad. It should still be interruptible. I think I can break my resistance and say this (ghci not being interruptible) is a bug :)
Strangely, if you define two empty functions, just calling each other, this infinite loop can be easily interrupted. Try it with:
f = g
g = f
Moreover, if you compile&run your original code, a very quick 'stack space overflow' occurs. Nothing to interrupt there. At least it doesn't eat up all your system resources as you say ghci does. I just killed the process, saved before the need to restart :)
Best,
Ozgur