By the way, the Enumerator/Iteratee approach to IO was developed by Oleg Kiselyov. Google him and check out his website when you are prepared to have your mind blown.