[Haskell-cafe] How to implement a source-sink pattern