]> 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
-    RecordWildCards
+    FlexibleContexts
+  , FlexibleInstances
+  , OverlappingInstances
+  , RecordWildCards
   , TemplateHaskell
+  , UndecidableInstances
   , 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 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
@@ -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 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]