dependent-sum-template 0.0.0.4 → 0.0.0.5
raw patch · 3 files changed
+61/−1 lines, 3 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Data.GADT.Compare.TH: instance Applicative (GComparing a b)
- Data.GADT.Compare.TH: instance DeriveGCompare Dec
- Data.GADT.Compare.TH: instance DeriveGCompare Name
- Data.GADT.Compare.TH: instance DeriveGCompare t => DeriveGCompare (Q t)
- Data.GADT.Compare.TH: instance DeriveGCompare t => DeriveGCompare [t]
- Data.GADT.Compare.TH: instance DeriveGEQ Dec
- Data.GADT.Compare.TH: instance DeriveGEQ Name
- Data.GADT.Compare.TH: instance DeriveGEQ t => DeriveGEQ (Q t)
- Data.GADT.Compare.TH: instance DeriveGEQ t => DeriveGEQ [t]
- Data.GADT.Compare.TH: instance Functor (GComparing a b)
- Data.GADT.Compare.TH: instance Monad (GComparing a b)
- Data.GADT.Show.TH: instance DeriveGShow Dec
- Data.GADT.Show.TH: instance DeriveGShow Name
- Data.GADT.Show.TH: instance DeriveGShow t => DeriveGShow (Q t)
- Data.GADT.Show.TH: instance DeriveGShow t => DeriveGShow [t]
+ Data.GADT.Compare.TH: instance Data.GADT.Compare.TH.DeriveGCompare Language.Haskell.TH.Syntax.Dec
+ Data.GADT.Compare.TH: instance Data.GADT.Compare.TH.DeriveGCompare Language.Haskell.TH.Syntax.Name
+ Data.GADT.Compare.TH: instance Data.GADT.Compare.TH.DeriveGCompare t => Data.GADT.Compare.TH.DeriveGCompare (Language.Haskell.TH.Syntax.Q t)
+ Data.GADT.Compare.TH: instance Data.GADT.Compare.TH.DeriveGCompare t => Data.GADT.Compare.TH.DeriveGCompare [t]
+ Data.GADT.Compare.TH: instance Data.GADT.Compare.TH.DeriveGEQ Language.Haskell.TH.Syntax.Dec
+ Data.GADT.Compare.TH: instance Data.GADT.Compare.TH.DeriveGEQ Language.Haskell.TH.Syntax.Name
+ Data.GADT.Compare.TH: instance Data.GADT.Compare.TH.DeriveGEQ t => Data.GADT.Compare.TH.DeriveGEQ (Language.Haskell.TH.Syntax.Q t)
+ Data.GADT.Compare.TH: instance Data.GADT.Compare.TH.DeriveGEQ t => Data.GADT.Compare.TH.DeriveGEQ [t]
+ Data.GADT.Compare.TH: instance forall (k :: BOX) (a :: k) (b :: k). GHC.Base.Applicative (Data.GADT.Compare.TH.GComparing a b)
+ Data.GADT.Compare.TH: instance forall (k :: BOX) (a :: k) (b :: k). GHC.Base.Functor (Data.GADT.Compare.TH.GComparing a b)
+ Data.GADT.Compare.TH: instance forall (k :: BOX) (a :: k) (b :: k). GHC.Base.Monad (Data.GADT.Compare.TH.GComparing a b)
+ Data.GADT.Show.TH: instance Data.GADT.Show.TH.DeriveGShow Language.Haskell.TH.Syntax.Dec
+ Data.GADT.Show.TH: instance Data.GADT.Show.TH.DeriveGShow Language.Haskell.TH.Syntax.Name
+ Data.GADT.Show.TH: instance Data.GADT.Show.TH.DeriveGShow t => Data.GADT.Show.TH.DeriveGShow (Language.Haskell.TH.Syntax.Q t)
+ Data.GADT.Show.TH: instance Data.GADT.Show.TH.DeriveGShow t => Data.GADT.Show.TH.DeriveGShow [t]
Files
- dependent-sum-template.cabal +1/−1
- src/Data/GADT/Compare/TH.hs +40/−0
- src/Data/GADT/Show/TH.hs +20/−0
dependent-sum-template.cabal view
@@ -1,5 +1,5 @@ name: dependent-sum-template-version: 0.0.0.4+version: 0.0.0.5 stability: experimental cabal-version: >= 1.6
src/Data/GADT/Compare/TH.hs view
@@ -30,21 +30,41 @@ _ -> fail "deriveGEq: the name of a type constructor is required" instance DeriveGEQ Dec where+#if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ >= 800+ deriveGEq (InstanceD overlaps cxt (AppT instType dataType) decs)+#else deriveGEq (InstanceD cxt (AppT instType dataType) decs)+#endif | headOfType instType == ''GEq = do let dataTypeName = headOfType dataType dataTypeInfo <- reify dataTypeName case dataTypeInfo of+#if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ >= 800+ TyConI (DataD dataCxt name bndrs _ cons _) -> do+#else TyConI (DataD dataCxt name bndrs cons _) -> do+#endif geqDec <- geqFunction bndrs cons+#if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ >= 800+ return [InstanceD overlaps cxt (AppT instType dataType) [geqDec]]+#else return [InstanceD cxt (AppT instType dataType) [geqDec]]+#endif _ -> fail "deriveGEq: the name of an algebraic data type constructor is required"+#if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ >= 800+ deriveGEq (DataD dataCxt name bndrs _ cons _) = return <$> inst+#else deriveGEq (DataD dataCxt name bndrs cons _) = return <$> inst+#endif where inst = instanceD (cxt (map return dataCxt)) (appT (conT ''GEq) (conT name)) [geqDec] geqDec = geqFunction bndrs cons #if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ >= 612+#if __GLASGOW_HASKELL__ >= 800+ deriveGEq (DataInstD dataCxt name tyArgs _ cons _) = return <$> inst+#else deriveGEq (DataInstD dataCxt name tyArgs cons _) = return <$> inst+#endif where inst = instanceD (cxt (map return dataCxt)) (appT (conT ''GEq) (foldl1 appT (map return $ (ConT name : init tyArgs)))) [geqDec] -- TODO: figure out proper number of family parameters vs instance parameters@@ -124,21 +144,41 @@ _ -> fail "deriveGCompare: the name of a type constructor is required" instance DeriveGCompare Dec where+#if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ >= 800+ deriveGCompare (InstanceD overlaps cxt (AppT instType dataType) decs)+#else deriveGCompare (InstanceD cxt (AppT instType dataType) decs)+#endif | headOfType instType == ''GCompare = do let dataTypeName = headOfType dataType dataTypeInfo <- reify dataTypeName case dataTypeInfo of+#if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ >= 800+ TyConI (DataD dataCxt name bndrs _ cons _) -> do+#else TyConI (DataD dataCxt name bndrs cons _) -> do+#endif gcompareDec <- gcompareFunction bndrs cons+#if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ >= 800+ return [InstanceD overlaps cxt (AppT instType dataType) [gcompareDec]]+#else return [InstanceD cxt (AppT instType dataType) [gcompareDec]]+#endif _ -> fail "deriveGCompare: the name of an algebraic data type constructor is required"+#if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ >= 800+ deriveGCompare (DataD dataCxt name bndrs _ cons _) = return <$> inst+#else deriveGCompare (DataD dataCxt name bndrs cons _) = return <$> inst+#endif where inst = instanceD (cxt (map return dataCxt)) (appT (conT ''GCompare) (conT name)) [gcompareDec] gcompareDec = gcompareFunction bndrs cons #if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ >= 612+#if __GLASGOW_HASKELL__ >= 800+ deriveGCompare (DataInstD dataCxt name tyArgs _ cons _) = return <$> inst+#else deriveGCompare (DataInstD dataCxt name tyArgs cons _) = return <$> inst+#endif where inst = instanceD (cxt (map return dataCxt)) (appT (conT ''GCompare) (foldl1 appT (map return $ (ConT name : init tyArgs)))) [gcompareDec] -- TODO: figure out proper number of family parameters vs instance parameters
src/Data/GADT/Show/TH.hs view
@@ -21,21 +21,41 @@ _ -> fail "deriveGShow: the name of a type constructor is required" instance DeriveGShow Dec where+#if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ >= 800+ deriveGShow (InstanceD overlaps cxt (AppT instType dataType) decs)+#else deriveGShow (InstanceD cxt (AppT instType dataType) decs)+#endif | headOfType instType == ''GShow = do let dataTypeName = headOfType dataType dataTypeInfo <- reify dataTypeName case dataTypeInfo of+#if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ >= 800+ TyConI (DataD dataCxt name bndrs _ cons _) -> do+#else TyConI (DataD dataCxt name bndrs cons _) -> do+#endif gshowDec <- gshowFunction cons+#if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ >= 800+ return [InstanceD overlaps cxt (AppT instType dataType) [gshowDec]]+#else return [InstanceD cxt (AppT instType dataType) [gshowDec]]+#endif _ -> fail "deriveGShow: the name of an algebraic data type constructor is required"+#if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ >= 800+ deriveGShow (DataD dataCxt name bndrs _ cons _) = return <$> inst+#else deriveGShow (DataD dataCxt name bndrs cons _) = return <$> inst+#endif where inst = instanceD (cxt (map return dataCxt)) (appT (conT ''GShow) (conT name)) [gshowDec] gshowDec = gshowFunction cons #if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ >= 612+#if __GLASGOW_HASKELL__ >= 800+ deriveGShow (DataInstD dataCxt name tyArgs _ cons _) = return <$> inst+#else deriveGShow (DataInstD dataCxt name tyArgs cons _) = return <$> inst+#endif where inst = instanceD (cxt (map return dataCxt)) (appT (conT ''GShow) (foldl1 appT (map return $ (ConT name : init tyArgs)))) [gshowDec] -- TODO: figure out proper number of family parameters vs instance parameters