, printHeaders
)
where
-import Control.Applicative
+import Control.Applicative hiding (empty)
import Control.Applicative.Unicode hiding ((∅))
import Control.Arrow
import Control.Monad
import Data.Monoid
import Data.Monoid.Unicode
import Network.HTTP.Lucu.Parser.Http
-import Prelude hiding (filter, lookup, null)
+import Prelude hiding (filter, foldr, lookup, null)
import Prelude.Unicode
newtype Headers
= Headers (M.Map CIAscii Ascii)
- deriving (Eq, Monoid, Show)
+ deriving (Eq, Show)
class HasHeaders a where
getHeaders ∷ a → Headers
{-# INLINE insert #-}
insert (key, val) (Headers m)
= Headers $ insertWith merge key val m
+ {-# INLINE empty #-}
+ empty
+ = Headers empty
+ {-# INLINE singleton #-}
+ singleton v
+ = Headers $ singleton v
+ {-# INLINE insertMany #-}
+ insertMany f (Headers m)
+ = Headers $ insertMany f m
+ {-# INLINE insertManySorted #-}
+ insertManySorted f (Headers m)
+ = Headers $ insertManySorted f m
instance Foldable Headers (CIAscii, Ascii) where
- {-# INLINE foldMap #-}
- foldMap f (Headers m) = foldMap f m
+ {-# INLINE foldr #-}
+ foldr f b (Headers m) = foldr f b m
instance Collection Headers (CIAscii, Ascii) where
{-# INLINE filter #-}
{-# INLINE inDomain #-}
inDomain k (Headers m) = inDomain k m
+instance Monoid Headers where
+ {-# INLINE mempty #-}
+ mempty = empty
+ {-# INLINE mappend #-}
+ mappend (Headers α) (Headers β)
+ = Headers $ insertManySorted β α
+
instance Map Headers CIAscii Ascii where
{-# INLINE lookup #-}
lookup k (Headers m) = lookup k m