multirec 0.7.3 → 0.7.4
raw patch · 2 files changed
+11/−5 lines, 2 filesdep ~template-haskell
Dependency ranges changed: template-haskell
Files
- multirec.cabal +2/−2
- src/Generics/MultiRec/TH.hs +9/−3
multirec.cabal view
@@ -1,5 +1,5 @@ name: multirec-version: 0.7.3+version: 0.7.4 license: BSD3 license-file: LICENSE author: Alexey Rodriguez,@@ -81,4 +81,4 @@ Generics.MultiRec.TEq build-depends: base >= 3.0 && < 5,- template-haskell >= 2.4 && < 2.9+ template-haskell >= 2.4 && < 2.10
src/Generics/MultiRec/TH.hs view
@@ -2,6 +2,7 @@ {-# LANGUAGE GADTs #-} {-# LANGUAGE KindSignatures #-} {-# LANGUAGE PatternGuards #-}+{-# LANGUAGE CPP #-} ----------------------------------------------------------------------------- -- |@@ -94,12 +95,17 @@ sum a b = conT ''(:+:) `appT` a `appT` b derivePFInstance :: Name -> [Name] -> [(Name, [Name])] -> Q [Dec]-derivePFInstance n ps nps =- return <$>- tySynInstD ''PF [foldl appT (conT n) (map varT ps)] (foldr1 sum (map (pfType (map fst nps) ps) nps))+derivePFInstance n ps nps = return <$> myTySynInst where sum :: Q Type -> Q Type -> Q Type sum a b = conT ''(:+:) `appT` a `appT` b+ tys = [foldl appT (conT n) (map varT ps)]+ ty = foldr1 sum (map (pfType (map fst nps) ps) nps)+#if __GLASGOW_HASKELL__ > 706+ myTySynInst = tySynInstD ''PF (tySynEqn tys ty)+#else+ myTySynInst = tySynInstD ''PF tys ty+#endif -- | Derive only the 'El' instances. Not needed if 'deriveAll' -- is used.