]> gitweb @ CieloNegro.org - Lucu.git/blobdiff - Network/HTTP/Lucu/OrphanInstances.hs
Fixed lots of bugs
[Lucu.git] / Network / HTTP / Lucu / OrphanInstances.hs
index a7e7b7ee8d5ac42cc9b1e6a4bdff4a88c1905157..b0bd421082eb10cb4948d1e6ebf58dafb0e3f751 100644 (file)
@@ -1,6 +1,10 @@
 {-# LANGUAGE
 {-# LANGUAGE
-    RecordWildCards
+    FlexibleContexts
+  , FlexibleInstances
+  , OverlappingInstances
+  , RecordWildCards
   , TemplateHaskell
   , TemplateHaskell
+  , UndecidableInstances
   , UnicodeSyntax
   #-}
 {-# OPTIONS_GHC -fno-warn-orphans #-}
   , UnicodeSyntax
   #-}
 {-# OPTIONS_GHC -fno-warn-orphans #-}
@@ -15,8 +19,8 @@ import qualified Data.ByteString.Char8 as Strict
 import qualified Data.ByteString.Lazy.Internal as Lazy
 import Data.CaseInsensitive (CI, FoldCase)
 import qualified Data.CaseInsensitive as CI
 import qualified Data.ByteString.Lazy.Internal as Lazy
 import Data.CaseInsensitive (CI, FoldCase)
 import qualified Data.CaseInsensitive as CI
-import Data.Map (Map)
-import qualified Data.Map as M
+import Data.Collections
+import Data.Collections.BaseInstances ()
 import Data.Ratio
 import Data.Text (Text)
 import qualified Data.Text as T
 import Data.Ratio
 import Data.Text (Text)
 import qualified Data.Text as T
@@ -44,10 +48,10 @@ instance (Lift s, FoldCase s) ⇒ Lift (CI s) where
 instance Lift Text where
     lift t = [| T.pack $(litE $ stringL $ T.unpack t) |]
 
 instance Lift Text where
     lift t = [| T.pack $(litE $ stringL $ T.unpack t) |]
 
-instance (Lift k, Lift v) ⇒ Lift (Map k v) where
-    lift m
-        | M.null m = [| M.empty |]
-        | otherwise = [| M.fromDistinctAscList $(liftPairs (M.toAscList m)) |]
+instance (Lift k, Lift v, Collection c (k, v)) ⇒ Lift c where
+    lift c
+        | null c    = [| empty |]
+        | otherwise = [| fromList $(liftPairs (fromFoldable c)) |]
         where
           liftPairs       = listE ∘ map liftPair
           liftPair (k, v) = tupE [lift k, lift v]
         where
           liftPairs       = listE ∘ map liftPair
           liftPair (k, v) = tupE [lift k, lift v]