On Jun 14, 2008, at 6:45 PM, Felipe Lessa wrote:
(Sorry, Sebastiaan, I hit send accidentally)

On Sat, Jun 14, 2008 at 1:18 PM, Sebastiaan Visser <[EMAIL PROTECTED]> wrote:
 readHttpMessage :: IO (Headers, Data.ByteString.Lazy.ByteString)
 readHttpMessage = do
   myStream <- <accept http connection from client>
   request <- hGetContents myStream
   header <- parseHttpHeader request
   bs <- Data.ByteString.Lazy.hGetContents myStream
   return (header, body)

Why not

readHttpMessage = do
  myStream <- <accept http connection from client>
  data <- Data.ByteString.Lazy.hGetContents myStream
  (header, rest) <- parseHttpHeader data
  return (header, rest)

i.e. make parseHttpHeader return the rest of the string it didn't parse?

Doesn't this imply that the parseHttpHeader must work on ByteStrings instead of regular Strings? Maybe this works for HTTP headers, but sometimes ByteStrings are not appropriate. Especially when you are not using the regular `System.IO.hGetContents' but the `System.IO.UTF8.hGetContents'.

In fact, may I ask why parseHttpHeader is not a pure function?

This is not a real-life example. It might as well be a pure function.

HTH,

-- Felipe.

--
Sebastiaan
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to