Hi,
while polishing a small library of mine, I ended up writing
a tutorial about the use of hGetBufNonBlocking and the
related Foreign.* functions you need to do fast,
block-oriented I/O in Haskell. There is something to be said
for literate programming.
Using recent topics for inspiration, the text describes the
implementation of a fast word-counting program. :-)
Here is the URL:
http://cryp.to/blockio/docs/tutorial.html
Peter