getHeader :: String -> a -> Maybe String
getHeader key a
- = fmap snd $ find (noCaseEq key . fst) (getHeaders a)
+ = key `seq` a `seq`
+ fmap snd $ find (noCaseEq' key . fst) (getHeaders a)
deleteHeader :: String -> a -> a
deleteHeader key a
- = setHeaders a $ filter (not . noCaseEq key . fst) (getHeaders a)
+ = key `seq` a `seq`
+ setHeaders a $ filter (not . noCaseEq' key . fst) (getHeaders a)
addHeader :: String -> String -> a -> a
addHeader key val a
- = setHeaders a $ (getHeaders a) ++ [(key, val)]
+ = key `seq` val `seq` a `seq`
+ setHeaders a $ (getHeaders a) ++ [(key, val)]
setHeader :: String -> String -> a -> a
setHeader key val a
- = let list = getHeaders a
- deleted = filter (not . noCaseEq key . fst) list
+ = key `seq` val `seq` a `seq`
+ let list = getHeaders a
+ deleted = filter (not . noCaseEq' key . fst) list
added = deleted ++ [(key, val)]
in
setHeaders a added
hPutHeaders :: Handle -> Headers -> IO ()
-hPutHeaders h hds = mapM_ putH hds >> hPutStr h "\r\n"
+hPutHeaders h hds
+ = h `seq` hds `seq`
+ mapM_ putH hds >> hPutStr h "\r\n"
where
- putH (name, value) = do hPutStr h name
- hPutStr h ": "
- hPutStr h value
- hPutStr h "\r\n"
+ putH :: (String, String) -> IO ()
+ putH (name, value)
+ = name `seq` value `seq`
+ do hPutStr h name
+ hPutStr h ": "
+ hPutStr h value
+ hPutStr h "\r\n"