What's the reason for not having getRequest and postRequest return Request a, i.e.:
getRequest :: BufferType a => String -> Request a
postRequest :: BufferType a => String -> Request a
If they were like this, it would be much easier to tell the library to use (Lazy) ByteStrings instead of Strings. The simplest way I could do that with what's in the library at this point is this:
request :: URI -> IO ByteString
request url = simpleHTTP (defaultGETRequest_ url) >>= getResponseBody
While it's not necessarily ugly or bad, I think it would be much nicer to have polymorphic getRequest/postRequest functions.