]> gitweb @ CieloNegro.org - Lucu.git/blobdiff - Network/HTTP/Lucu/MIMEParams.hs
Automatic deriving of Unfoldable
[Lucu.git] / Network / HTTP / Lucu / MIMEParams.hs
index ce0b6915a4118c2dbf178b786960ce8556f85355..1304c2328a5db1fd3931e332b07948928dc32bdb 100644 (file)
@@ -10,6 +10,9 @@
   , TypeSynonymInstances
   , UnicodeSyntax
   #-}
+{-# OPTIONS_GHC -ddump-splices #-} -- FIXME
+-- GHC 7.0.3 gives us a false warning.
+{-# OPTIONS_GHC -fno-warn-missing-methods #-}
 -- |Parsing and printing MIME parameter values
 -- (<http://tools.ietf.org/html/rfc2231>).
 module Network.HTTP.Lucu.MIMEParams
@@ -30,6 +33,7 @@ import qualified Data.ByteString.Char8 as BS
 import Data.Char
 import Data.Collections
 import Data.Collections.BaseInstances ()
+import qualified Data.Collections.Newtype.TH as C
 import qualified Data.Map as M (Map)
 import Data.Monoid
 import Data.Monoid.Unicode
@@ -53,23 +57,8 @@ newtype MIMEParams
     = MIMEParams (M.Map CIAscii Text)
     deriving (Eq, Show, Read, Monoid, Typeable)
 
--- FIXME: auto-derive
-instance Unfoldable MIMEParams (CIAscii, Text) where
-    {-# INLINE insert #-}
-    insert p (MIMEParams m)
-        = MIMEParams $ insert p m
-    {-# INLINE empty #-}
-    empty
-        = MIMEParams empty
-    {-# INLINE singleton #-}
-    singleton p
-        = MIMEParams $ singleton p
-    {-# INLINE insertMany #-}
-    insertMany f (MIMEParams m)
-        = MIMEParams $ insertMany f m
-    {-# INLINE insertManySorted #-}
-    insertManySorted f (MIMEParams m)
-        = MIMEParams $ insertManySorted f m
+C.derive [d| instance Unfoldable MIMEParams (CIAscii, Text)
+           |]
 
 -- FIXME: auto-derive
 instance Foldable MIMEParams (CIAscii, Text) where