Although the postgresql-libpq binding has supported both COPY IN and COPY OUT for some time now, this functionality wasn't available to postgresql-simple without mucking around in the Internal module to call libpq functions on your own.
I just now fixed that. The interface I went with ultimately mimics the libpq interface rather closely, albeit with many simplifications. I did consider offering fold-like combinators, and while they would certainly be much more convenient for some use cases, they also introduce a number of complications, such as dealing with exceptions.
Best,
Leon