packages feed

RepLib 0.2.1 → 0.2.2

raw patch · 5 files changed

+28/−24 lines, 5 filesdep ~basedep ~template-haskellnew-uploaderPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependency ranges changed: base, template-haskell

API changes (from Hackage documentation)

- Data.RepLib.PreludeReps: instance (Rep a[12], Rep b[13], Rep c[14], Rep d[15], Rep e[16], Rep f[17], Rep g[18], Sat (ctx[a6Xq] a[12]), Sat (ctx[a6Xq] b[13]), Sat (ctx[a6Xq] c[14]), Sat (ctx[a6Xq] d[15]), Sat (ctx[a6Xq] e[16]), Sat (ctx[a6Xq] f[17]), Sat (ctx[a6Xq] g[18])) => Rep1 ctx[a6Xq] (a[12], b[13], c[14], d[15], e[16], f[17], g[18])
- Data.RepLib.PreludeReps: instance (Rep a[12], Rep b[13], Rep c[14], Rep d[15], Rep e[16], Rep f[17], Sat (ctx[a6Y2] a[12]), Sat (ctx[a6Y2] b[13]), Sat (ctx[a6Y2] c[14]), Sat (ctx[a6Y2] d[15]), Sat (ctx[a6Y2] e[16]), Sat (ctx[a6Y2] f[17])) => Rep1 ctx[a6Y2] (a[12], b[13], c[14], d[15], e[16], f[17])
- Data.RepLib.PreludeReps: instance (Rep a[12], Rep b[13], Rep c[14], Rep d[15], Rep e[16], Sat (ctx[a6Yz] a[12]), Sat (ctx[a6Yz] b[13]), Sat (ctx[a6Yz] c[14]), Sat (ctx[a6Yz] d[15]), Sat (ctx[a6Yz] e[16])) => Rep1 ctx[a6Yz] (a[12], b[13], c[14], d[15], e[16])
- Data.RepLib.PreludeReps: instance (Rep a[12], Rep b[13], Rep c[14], Rep d[15], Sat (ctx[a6Z1] a[12]), Sat (ctx[a6Z1] b[13]), Sat (ctx[a6Z1] c[14]), Sat (ctx[a6Z1] d[15])) => Rep1 ctx[a6Z1] (a[12], b[13], c[14], d[15])
- Data.RepLib.PreludeReps: instance (Rep a[12], Rep b[13], Rep c[14], Sat (ctx[a6Zo] a[12]), Sat (ctx[a6Zo] b[13]), Sat (ctx[a6Zo] c[14])) => Rep1 ctx[a6Zo] (a[12], b[13], c[14])
- Data.RepLib.PreludeReps: instance (Rep a[a1ko]) => Rep (Maybe a[a1ko])
- Data.RepLib.PreludeReps: instance (Rep a[a1ko], Sat (ctx[a70c] a[a1ko])) => Rep1 ctx[a70c] (Maybe a[a1ko])
- Data.RepLib.PreludeReps: instance (Rep a[a6ZO], Rep b[a6ZN]) => Rep (Either a[a6ZO] b[a6ZN])
- Data.RepLib.PreludeReps: instance (Rep a[a6ZO], Rep b[a6ZN], Sat (ctx[a6ZX] a[a6ZO]), Sat (ctx[a6ZX] b[a6ZN])) => Rep1 ctx[a6ZX] (Either a[a6ZO] b[a6ZN])
- Data.RepLib.PreludeReps: instance Rep1 ctx[a6ZG] Ordering
- Data.RepLib.PreludeReps: instance Rep1 ctx[a70m] Bool
+ Data.RepLib.Derive: derive :: [Name] -> Q [Dec]
+ Data.RepLib.PreludeReps: instance (Rep a[12], Rep b[13], Rep c[14], Rep d[15], Rep e[16], Rep f[17], Rep g[18], Sat (ctx[acEO] a[12]), Sat (ctx[acEO] b[13]), Sat (ctx[acEO] c[14]), Sat (ctx[acEO] d[15]), Sat (ctx[acEO] e[16]), Sat (ctx[acEO] f[17]), Sat (ctx[acEO] g[18])) => Rep1 ctx[acEO] (a[12], b[13], c[14], d[15], e[16], f[17], g[18])
+ Data.RepLib.PreludeReps: instance (Rep a[12], Rep b[13], Rep c[14], Rep d[15], Rep e[16], Rep f[17], Sat (ctx[acFq] a[12]), Sat (ctx[acFq] b[13]), Sat (ctx[acFq] c[14]), Sat (ctx[acFq] d[15]), Sat (ctx[acFq] e[16]), Sat (ctx[acFq] f[17])) => Rep1 ctx[acFq] (a[12], b[13], c[14], d[15], e[16], f[17])
+ Data.RepLib.PreludeReps: instance (Rep a[12], Rep b[13], Rep c[14], Rep d[15], Rep e[16], Sat (ctx[acFX] a[12]), Sat (ctx[acFX] b[13]), Sat (ctx[acFX] c[14]), Sat (ctx[acFX] d[15]), Sat (ctx[acFX] e[16])) => Rep1 ctx[acFX] (a[12], b[13], c[14], d[15], e[16])
+ Data.RepLib.PreludeReps: instance (Rep a[12], Rep b[13], Rep c[14], Rep d[15], Sat (ctx[acGp] a[12]), Sat (ctx[acGp] b[13]), Sat (ctx[acGp] c[14]), Sat (ctx[acGp] d[15])) => Rep1 ctx[acGp] (a[12], b[13], c[14], d[15])
+ Data.RepLib.PreludeReps: instance (Rep a[12], Rep b[13], Rep c[14], Sat (ctx[acGM] a[12]), Sat (ctx[acGM] b[13]), Sat (ctx[acGM] c[14])) => Rep1 ctx[acGM] (a[12], b[13], c[14])
+ Data.RepLib.PreludeReps: instance (Rep a[a1Nk]) => Rep (Maybe a[a1Nk])
+ Data.RepLib.PreludeReps: instance (Rep a[a1Nk], Sat (ctx[acHA] a[a1Nk])) => Rep1 ctx[acHA] (Maybe a[a1Nk])
+ Data.RepLib.PreludeReps: instance (Rep a[acHc], Rep b[acHb]) => Rep (Either a[acHc] b[acHb])
+ Data.RepLib.PreludeReps: instance (Rep a[acHc], Rep b[acHb], Sat (ctx[acHl] a[acHc]), Sat (ctx[acHl] b[acHb])) => Rep1 ctx[acHl] (Either a[acHc] b[acHb])
+ Data.RepLib.PreludeReps: instance Rep1 ctx[acH4] Ordering
+ Data.RepLib.PreludeReps: instance Rep1 ctx[acHK] Bool
- Data.RepLib.PreludeReps: rBool1 :: R1 ctx[a70m] Bool
+ Data.RepLib.PreludeReps: rBool1 :: R1 ctx[acHK] Bool
- Data.RepLib.PreludeReps: rEither :: (Rep a[a6ZO], Rep b[a6ZN]) => R (Either a[a6ZO] b[a6ZN])
+ Data.RepLib.PreludeReps: rEither :: (Rep a[acHc], Rep b[acHb]) => R (Either a[acHc] b[acHb])
- Data.RepLib.PreludeReps: rEither1 :: (Rep a[a6ZO], Rep b[a6ZN]) => ctx[a6ZX] a[a6ZO] -> ctx[a6ZX] b[a6ZN] -> R1 ctx[a6ZX] (Either a[a6ZO] b[a6ZN])
+ Data.RepLib.PreludeReps: rEither1 :: (Rep a[acHc], Rep b[acHb]) => ctx[acHl] a[acHc] -> ctx[acHl] b[acHb] -> R1 ctx[acHl] (Either a[acHc] b[acHb])
- Data.RepLib.PreludeReps: rMaybe :: (Rep a[a1ko]) => R (Maybe a[a1ko])
+ Data.RepLib.PreludeReps: rMaybe :: (Rep a[a1Nk]) => R (Maybe a[a1Nk])
- Data.RepLib.PreludeReps: rMaybe1 :: (Rep a[a1ko]) => ctx[a70c] a[a1ko] -> R1 ctx[a70c] (Maybe a[a1ko])
+ Data.RepLib.PreludeReps: rMaybe1 :: (Rep a[a1Nk]) => ctx[acHA] a[a1Nk] -> R1 ctx[acHA] (Maybe a[a1Nk])
- Data.RepLib.PreludeReps: rOrdering1 :: R1 ctx[a6ZG] Ordering
+ Data.RepLib.PreludeReps: rOrdering1 :: R1 ctx[acH4] Ordering
- Data.RepLib.PreludeReps: rTup3_1 :: (Rep a[12], Rep b[13], Rep c[14]) => ctx[a6Zo] a[12] -> ctx[a6Zo] b[13] -> ctx[a6Zo] c[14] -> R1 ctx[a6Zo] ((,,) a[12] b[13] c[14])
+ Data.RepLib.PreludeReps: rTup3_1 :: (Rep a[12], Rep b[13], Rep c[14]) => ctx[acGM] a[12] -> ctx[acGM] b[13] -> ctx[acGM] c[14] -> R1 ctx[acGM] ((,,) a[12] b[13] c[14])
- Data.RepLib.PreludeReps: rTup4_1 :: (Rep a[12], Rep b[13], Rep c[14], Rep d[15]) => ctx[a6Z1] a[12] -> ctx[a6Z1] b[13] -> ctx[a6Z1] c[14] -> ctx[a6Z1] d[15] -> R1 ctx[a6Z1] ((,,,) a[12] b[13] c[14] d[15])
+ Data.RepLib.PreludeReps: rTup4_1 :: (Rep a[12], Rep b[13], Rep c[14], Rep d[15]) => ctx[acGp] a[12] -> ctx[acGp] b[13] -> ctx[acGp] c[14] -> ctx[acGp] d[15] -> R1 ctx[acGp] ((,,,) a[12] b[13] c[14] d[15])
- Data.RepLib.PreludeReps: rTup5_1 :: (Rep a[12], Rep b[13], Rep c[14], Rep d[15], Rep e[16]) => ctx[a6Yz] a[12] -> ctx[a6Yz] b[13] -> ctx[a6Yz] c[14] -> ctx[a6Yz] d[15] -> ctx[a6Yz] e[16] -> R1 ctx[a6Yz] ((,,,,) a[12] b[13] c[14] d[15] e[16])
+ Data.RepLib.PreludeReps: rTup5_1 :: (Rep a[12], Rep b[13], Rep c[14], Rep d[15], Rep e[16]) => ctx[acFX] a[12] -> ctx[acFX] b[13] -> ctx[acFX] c[14] -> ctx[acFX] d[15] -> ctx[acFX] e[16] -> R1 ctx[acFX] ((,,,,) a[12] b[13] c[14] d[15] e[16])
- Data.RepLib.PreludeReps: rTup6_1 :: (Rep a[12], Rep b[13], Rep c[14], Rep d[15], Rep e[16], Rep f[17]) => ctx[a6Y2] a[12] -> ctx[a6Y2] b[13] -> ctx[a6Y2] c[14] -> ctx[a6Y2] d[15] -> ctx[a6Y2] e[16] -> ctx[a6Y2] f[17] -> R1 ctx[a6Y2] ((,,,,,) a[12] b[13] c[14] d[15] e[16] f[17])
+ Data.RepLib.PreludeReps: rTup6_1 :: (Rep a[12], Rep b[13], Rep c[14], Rep d[15], Rep e[16], Rep f[17]) => ctx[acFq] a[12] -> ctx[acFq] b[13] -> ctx[acFq] c[14] -> ctx[acFq] d[15] -> ctx[acFq] e[16] -> ctx[acFq] f[17] -> R1 ctx[acFq] ((,,,,,) a[12] b[13] c[14] d[15] e[16] f[17])
- Data.RepLib.PreludeReps: rTup7_1 :: (Rep a[12], Rep b[13], Rep c[14], Rep d[15], Rep e[16], Rep f[17], Rep g[18]) => ctx[a6Xq] a[12] -> ctx[a6Xq] b[13] -> ctx[a6Xq] c[14] -> ctx[a6Xq] d[15] -> ctx[a6Xq] e[16] -> ctx[a6Xq] f[17] -> ctx[a6Xq] g[18] -> R1 ctx[a6Xq] ((,,,,,,) a[12] b[13] c[14] d[15] e[16] f[17] g[18])
+ Data.RepLib.PreludeReps: rTup7_1 :: (Rep a[12], Rep b[13], Rep c[14], Rep d[15], Rep e[16], Rep f[17], Rep g[18]) => ctx[acEO] a[12] -> ctx[acEO] b[13] -> ctx[acEO] c[14] -> ctx[acEO] d[15] -> ctx[acEO] e[16] -> ctx[acEO] f[17] -> ctx[acEO] g[18] -> R1 ctx[acEO] ((,,,,,,) a[12] b[13] c[14] d[15] e[16] f[17] g[18])

Files

Data/RepLib/Derive.hs view
@@ -147,19 +147,21 @@             case info' of                 TyConI d -> do                   (name, param, ca, terms) <- typeInfo ((return d) :: Q Dec) +                  let paramNames = map tyVarBndrName param                   baseT <- conT name                                         -- the type that we are defining, applied to its parameters.-                  let ty = foldl (\x p -> x `AppT` (VarT p)) baseT param+                  let ty = foldl (\x p -> x `AppT` (VarT p)) baseT paramNames                   -- the representations of the paramters, as a list                   -- representations of the data constructors                   rcons <- mapM (repcon (length terms == 1) ty) terms-                  body  <- [| Data $(repDT name param) $(return (ListE rcons)) |]-                  let ctx   = map (\p -> (ConT (mkName "Rep")) `AppT` (VarT p)) param+                  body  <- [| Data $(repDT name paramNames) $(return (ListE rcons)) |]+                  let ctx = map (\p -> ClassP (mkName "Rep") [VarT p]) paramNames                   let rTypeName :: Name                        rTypeName = rName n                       rSig :: Dec-                      rSig = SigD rTypeName (ForallT param ctx ((ConT (mkName "R"))-																					 `AppT` ty))+                      rSig = SigD rTypeName (ForallT (map PlainTV paramNames) +                                                     ctx ((ConT (mkName "R"))+         	                                          `AppT` ty))                       rType :: Dec                        rType = ValD (VarP rTypeName) (NormalB body) []                    let inst  = InstanceD ctx ((ConT (mkName "Rep")) `AppT` ty)@@ -212,8 +214,9 @@              case info' of                TyConI d -> do                   (name, param, ca, terms) <- typeInfo ((return d) :: Q Dec) +                  let paramNames = map tyVarBndrName param                   -- the type that we are defining, applied to its parameters.                      -                  let ty = foldl (\x p -> x `AppT` (VarT p)) (ConT name) param+                  let ty = foldl (\x p -> x `AppT` (VarT p)) (ConT name) paramNames                   let rTypeName = rName1 n                    ctx <- newName "ctx"@@ -224,13 +227,13 @@                   let cparams = map (\(n,t,_) -> SigP (VarP n) t) ctxParams                                  -- the recursive call of the rep function-                  let e1 = foldl (\a r -> a `AppE` (VarE r)) (VarE rTypeName) param+                  let e1 = foldl (\a r -> a `AppE` (VarE r)) (VarE rTypeName) paramNames                   let e2 = foldl (\a (n,_,_) -> a `AppE` (VarE n)) e1 ctxParams                    -- the representations of the parameters, as a list                   -- representations of the data constructors                   rcons <- mapM (repcon1 ty (length terms == 1) e2 ctxParams) terms-                  body  <- [| Data1 $(repDT name param) +                  body  <- [| Data1 $(repDT name paramNames)                                      $(return (ListE rcons)) |]                                               let rhs = LamE (cparams) body@@ -239,18 +242,18 @@                       rTypeDecl = ValD (VarP rTypeName) (NormalB rhs) []   -                  let ctxRep = map (\p -> (ConT (mkName "Rep")) `AppT` (VarT p)) param-                      ctxRec = map (\(_,t,_) -> (ConT ''Sat) `AppT` t) ctxParams+                  let ctxRep = map (\p -> ClassP (mkName "Rep") [VarT p]) paramNames+                      ctxRec = map (\(_,t,_) -> ClassP ''Sat [t]) ctxParams                        -- appRep t = foldl (\a p -> a `AppE` (VarE 'rep)) t param                       appRec t = foldl (\a p -> a `AppE` (VarE 'dict)) t ctxParams                    let inst  = InstanceD (ctxRep ++ ctxRec)                                 ((ConT ''Rep1) `AppT` (VarT ctx) `AppT` ty)-                                 [ValD (VarP (mkName "rep1"))+                                [ValD (VarP (mkName "rep1"))                                   (NormalB (appRec (VarE rTypeName))) []] -                  let rSig = SigD rTypeName (ForallT (ctx : param) ctxRep+                  let rSig = SigD rTypeName (ForallT (map PlainTV (ctx : paramNames)) ctxRep                               (foldr (\(_,p,_) f -> (ArrowT `AppT` p `AppT` f))                                      ((ConT (mkName "R1")) `AppT` (VarT ctx) `AppT` ty)                                      ctxParams))@@ -277,7 +280,7 @@  ---  from SYB III code.... -typeInfo :: DecQ -> Q (Name, [Name], [(Name, Int)], [(Name, [(Maybe Name, Type)])])+typeInfo :: DecQ -> Q (Name, [TyVarBndr], [(Name, Int)], [(Name, [(Maybe Name, Type)])]) typeInfo m =      do d <- m         case d of@@ -318,3 +321,6 @@         _:t         -> mkName t  +tyVarBndrName :: TyVarBndr -> Name+tyVarBndrName (PlainTV n) = n+tyVarBndrName (KindedTV n _) = n
Data/RepLib/Lib.hs view
@@ -42,7 +42,7 @@ import Data.RepLib.R  import Data.RepLib.R1 import Data.RepLib.RepAux-import Data.RepLib.PreludeReps+import Data.RepLib.PreludeReps()  ------------------- Subtrees -------------------------- -- there is no point in using R1 for subtrees
Data/RepLib/SYB/Schemes.hs view
@@ -44,7 +44,6 @@ import Data.RepLib.R import Data.RepLib.RepAux import Data.RepLib.SYB.Aliases-import Control.Monad   -- | Apply a transformation everywhere in bottom-up manner
Data/RepLib/Unify.hs view
@@ -24,8 +24,7 @@ import Data.RepLib.R  import Data.RepLib.R1 import Data.RepLib.RepAux-import Data.RepLib.PreludeReps-import Control.Monad+import Data.RepLib.PreludeReps() import Control.Monad.State import Control.Monad.Error 
RepLib.cabal view
@@ -1,12 +1,13 @@ name:           RepLib-version:        0.2.1+version:        0.2.2 license:        LGPL license-file:   LICENSE build-type:     Simple cabal-version:  >= 1.2.3-tested-with:    GHC == 6.10.3, GHC == 6.8.3+tested-with:    GHC == 6.12.1 author:         Stephanie Weirich-maintainer:     Brent Yorgey <byorgey@cis.upenn.edu>+maintainer:     Chris Casinghino <ccasin@cis.upenn.edu>+                Brent Yorgey <byorgey@cis.upenn.edu>                 Stephanie Weirich <sweirich@cis.upenn.edu> homepage:       http://www.cis.upenn.edu/~sweirich/RepLib category:       Data@@ -16,8 +17,8 @@                 polymorphism and other features.  Library-  build-depends: base >= 3.0 && < 4.2, haskell98 >= 1.0 && < 1.1, -                 template-haskell >= 2.2 && < 2.4, mtl >= 1.1 && < 1.2+  build-depends: base >= 4.2 && < 5, haskell98 >= 1.0 && < 1.1, +                 template-haskell >= 2.4 && < 2.5, mtl >= 1.1 && < 1.2   exposed-modules:     Data.RepLib,     Data.RepLib.R,@@ -30,5 +31,4 @@     Data.RepLib.SYB.Aliases,     Data.RepLib.SYB.Schemes,     Data.RepLib.Unify-  if impl(ghc < 6.10)-    extensions: PatternSignatures+  extensions: GADTs