data-combinator-gen 0.1.0.3 → 0.1.0.4
raw patch · 3 files changed
+12/−8 lines, 3 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- CHANGELOG.md +4/−0
- data-combinator-gen.cabal +1/−1
- src/Data/Combinators/TH.hs +7/−7
CHANGELOG.md view
@@ -1,5 +1,9 @@ # Revision history for data-combinator-gen +## 0.1.0.4 -- 2019-05-26++* Small fix+ ## 0.1.0.3 -- 2019-05-26 * Actually corrected recursion on (,) - it's now right recursive
data-combinator-gen.cabal view
@@ -13,7 +13,7 @@ -- PVP summary: +-+------- breaking API changes -- | | +----- non-breaking API additions -- | | | +--- code changes with no API change-version: 0.1.0.3+version: 0.1.0.4 -- A short (one-line) description of the package. synopsis: Generate a special combinator from any data type.
src/Data/Combinators/TH.hs view
@@ -51,11 +51,11 @@ -> (Con, Int) -- (Constructor, Indice of current constructor) -> ClauseQ combinClause (patsF, varsF) (NormalC name fields, i) = do (patsC, varsC) <- genPE "a" (length fields)- funClause patsF varsF patsC varsC name (length fields) i+ funClause patsF varsF patsC varsC name i combinClause (patsF, varsF) (RecC name fields, i) = do (patsC, varsC) <- genPE "a" (length fields)- funClause patsF varsF patsC varsC name (length fields) i+ funClause patsF varsF patsC varsC name i combinClause (patsF, varsF) (InfixC _ name _, i) = do (patsC, varsC) <- genPE "a" 2- funClause patsF varsF patsC varsC name 2 i+ funClause patsF varsF patsC varsC name i combinClause _ (ForallC{}, _) = error "makeCombinator: GADTs are not currently supported." combinClause _ (GadtC{}, _) = error "makeCombinator: GADTs are not currently supported." combinClause _ (RecGadtC{}, _) = error "makeCombinator: GADTs are not currently supported."@@ -63,17 +63,17 @@ ----- -- (3) combinClause auxiliary functions ------funClause :: [PatQ] -> [ExpQ] -> [PatQ] -> [ExpQ] -> Name -> Int -> Int -> ClauseQ-funClause pF vF pC vC name l i = +funClause :: [PatQ] -> [ExpQ] -> [PatQ] -> [ExpQ] -> Name -> Int -> ClauseQ+funClause pF vF pC vC name i = clause (pF ++ [conP name pC]) (normalB (appE (vF !! i) - (applyConVars vC name vC (l - 1)))) + (applyConVars vC name vC 0))) [] applyConVars :: [ExpQ] -> t -> [a] -> Int -> ExpQ applyConVars _ _ [] _ = conE (mkName "()") applyConVars varsC _ [_] n = varsC !! n-applyConVars varsC name' (_:fs) n = tupE ([(varsC !! n), applyConVars varsC name' fs (n-1)])+applyConVars varsC name' (_:fs) n = tupE ([(varsC !! n), applyConVars varsC name' fs (n+1)]) ------