It's all imperative code. Would someone who really knew Haskell write it differently?
https://github.com/snapframework/snap-core/tree/master/src/S... http://okmij.org/ftp/Streams.html
Based on what usage/performance you expect you could maybe take a different approach, but for a simple and general TCP server example I don't see a reason to do anything different except maybe minor style details...