I hope you will trust me that it was quick and easy. (It took much longer to write this explanation than the code.)
Of course, and thankyou. This would make a really good addition to the GHC docs.
Actually, I think it could easily replace The User's Guide in it's entirety for the first 2 months after new users get their hands on it.
(It took much longer to write this explanation than the code.)
And it will probably take me much longer still to understand it :)
One question. In your first pass you use 'interact', which later gets dropped in favour of your own 'control'. Where does 'interact come from? It does not appear to be a part of prelude?
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
Lingua non convalesco, consenesco et abolesco. -- Rule 1 has a caveat! -- Who broke the cabal?
"Science is about questioning the status quo. Questioning authority".
The "good enough" maybe good enough for the now, and perfection maybe unobtainable, but that should not preclude us from striving for perfection, when time, circumstance or desire allow.