]> gitweb @ CieloNegro.org - Lucu.git/blobdiff - Network/HTTP/Lucu/OrphanInstances.hs
hlint
[Lucu.git] / Network / HTTP / Lucu / OrphanInstances.hs
index a7e7b7ee8d5ac42cc9b1e6a4bdff4a88c1905157..47db98b7dee176f73da96f3ac9e79556c53fdc0f 100644 (file)
@@ -1,6 +1,10 @@
 {-# LANGUAGE
-    RecordWildCards
+    FlexibleContexts
+  , FlexibleInstances
+  , OverlappingInstances
+  , RecordWildCards
   , TemplateHaskell
+  , UndecidableInstances
   , UnicodeSyntax
   #-}
 {-# OPTIONS_GHC -fno-warn-orphans #-}
@@ -8,6 +12,7 @@ module Network.HTTP.Lucu.OrphanInstances
     (
     )
     where
+import Control.Applicative hiding (empty)
 import Data.Ascii (Ascii)
 import qualified Data.Ascii as A
 import Data.ByteString (ByteString)
@@ -15,8 +20,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
@@ -27,7 +32,7 @@ import Prelude hiding (last, mapM, null, reverse)
 import Prelude.Unicode
 
 instance Lift ByteString where
-    lift bs = [| Strict.pack $(litE $ stringL $ Strict.unpack bs) |]
+    lift bs = [| Strict.pack $(litE  stringL $ Strict.unpack bs) |]
 
 instance Lift Lazy.ByteString where
     lift = Lazy.foldrChunks f [| Lazy.Empty |]
@@ -42,14 +47,14 @@ instance (Lift s, FoldCase s) ⇒ Lift (CI s) where
     lift s = [| CI.mk $(lift $ CI.original s) |]
 
 instance Lift Text where
-    lift t = [| T.pack $(litE $ stringL $ T.unpack t) |]
+    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
+          liftPairs       = listE ∘ (liftPair <$>)
           liftPair (k, v) = tupE [lift k, lift v]
 
 instance Lift UTCTime where
@@ -64,5 +69,5 @@ instance Lift DiffTime where
     lift dt = [| fromRational ($n % $d) ∷ DiffTime |]
         where
           n, d ∷ Q Exp
-          n = lift $ numerator   $ toRational dt
-          d = lift $ denominator $ toRational dt
+          n = lift  numerator   $ toRational dt
+          d = lift  denominator $ toRational dt