X-Git-Url: http://git.cielonegro.org/gitweb.cgi?p=Lucu.git;a=blobdiff_plain;f=Network%2FHTTP%2FLucu%2FOrphanInstances.hs;h=b0bd421082eb10cb4948d1e6ebf58dafb0e3f751;hp=a7e7b7ee8d5ac42cc9b1e6a4bdff4a88c1905157;hb=6df5f92e37d27641f53e271f043c66dd3d085bb7;hpb=e10c97106e77114fb60bb4772319d8ca3e96cdbc diff --git a/Network/HTTP/Lucu/OrphanInstances.hs b/Network/HTTP/Lucu/OrphanInstances.hs index a7e7b7e..b0bd421 100644 --- a/Network/HTTP/Lucu/OrphanInstances.hs +++ b/Network/HTTP/Lucu/OrphanInstances.hs @@ -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]