multirec 0.7.7 → 0.7.8
raw patch · 5 files changed
+111/−15 lines, 5 filesdep ~template-haskell
Dependency ranges changed: template-haskell
Files
- examples/GRose.hs +47/−0
- examples/J.hs +23/−0
- examples/VarTypes.hs +22/−0
- multirec.cabal +16/−14
- src/Generics/MultiRec/TH.hs +3/−1
+ examples/GRose.hs view
@@ -0,0 +1,47 @@+{-# LANGUAGE EmptyDataDecls #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE GADTs #-}+{-# LANGUAGE KindSignatures #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE MultiParamTypeClasses #-}++module GRose where++-- Test case for Issue #1.++import Generics.MultiRec.Base+import Generics.MultiRec.TH++data GRose a = Leaf a | Node [GRose a]++data GRoseF :: * -> * -> * where+ GRose :: GRoseF a (GRose a)++$(deriveAll ''GRoseF)++-- Desired output:+--+-- data Leaf+-- data Node+--+-- instance Constructor Leaf where+-- conName _ = "Leaf"+-- instance Constructor Node where+-- conName _ = "Node"+--+-- type instance PF (GRoseF a) =+-- (:>:) ((:+:) (C Leaf (K a)) (C Node ((:.:) [] (I (GRose a))))) (GRose a)+--+-- instance El (GRoseF a) (GRose a) where+-- proof = GRose+--+-- instance Fam (GRoseF a) where+--+-- from GRose (Leaf f0) = Tag (L (C (K f0)))+-- from GRose (Node f0) = Tag (R (C ((D . (fmap (I . I0))) f0)))+--+-- to GRose (Tag (L (C f0))) = Leaf (unK f0)+-- to GRose (Tag (R (C f0))) = Node (((fmap (unI0 . unI)) . unD) f0)+--+-- instance EqS (GRoseF a) where+-- eqS GRose GRose = Just Refl
+ examples/J.hs view
@@ -0,0 +1,23 @@+{-# LANGUAGE GADTs #-}+{-# LANGUAGE KindSignatures #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE TypeOperators #-}+{-# LANGUAGE TypeSynonymInstances #-}+{-# LANGUAGE EmptyDataDecls #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE FlexibleInstances #-}++module J where++import Generics.MultiRec.Base+import Generics.MultiRec.TH++-- Issue #4 test case++data J a = JJ (a, J a)++data AST :: * -> * -> * where+ J :: AST a (J a)++$(deriveAll ''AST)
+ examples/VarTypes.hs view
@@ -0,0 +1,22 @@+{-# LANGUAGE EmptyDataDecls #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE GADTs #-}+{-# LANGUAGE KindSignatures #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE MultiParamTypeClasses #-}++module VarTypes where++import Generics.MultiRec.TH++data Type1 a b = CA a | CB b+data Type2 c = CC c | CD+data Type3 = CE++data TypesF :: * -> * -> * -> * -> * where+ Type1 :: TypesF a b c (Type1 a b)+ Type2 :: TypesF a b c (Type2 c)+ Type3 :: TypesF a b c Type3++$(deriveAll ''TypesF)+
multirec.cabal view
@@ -1,5 +1,5 @@ name: multirec-version: 0.7.7+version: 0.7.8 license: BSD3 license-file: LICENSE author: Alexey Rodriguez,@@ -34,21 +34,12 @@ * Alexey Rodriguez, Stefan Holdermans, Andres Löh, Johan Jeuring. /Generic programming with fixed points for mutually recursive datatypes/. ICFP 2009.- + stability: experimental build-type: Simple cabal-version: >= 1.10-tested-with: GHC == 7.6.3, GHC == 7.8.4, GHC == 7.10.3, GHC == 8.0.1-extra-source-files: examples/All.hs- examples/AST.hs- examples/ASTUse.hs- examples/ASTTHUse.hs- examples/ASTExamples.hs- examples/Single.hs- examples/SingleUse.hs- examples/SingleTHUse.hs- examples/SingleExamples.hs- CREDITS+tested-with: GHC == 7.6.3, GHC == 7.8.4, GHC == 7.10.3, GHC == 8.0.2, GHC == 8.2.2+extra-source-files: CREDITS source-repository head type: git@@ -83,11 +74,22 @@ default-language: Haskell2010 build-depends: base >= 3.0 && < 5,- template-haskell >= 2.4 && < 2.12+ template-haskell >= 2.4 && < 2.13 test-suite examples type: exitcode-stdio-1.0 main-is: All.hs+ other-modules: AST+ ASTExamples+ ASTTHUse+ ASTUse+ GRose+ J+ Single+ SingleExamples+ SingleTHUse+ SingleUse+ VarTypes hs-source-dirs: examples default-language: Haskell2010 build-depends: base >= 3.0 && < 5,
src/Generics/MultiRec/TH.hs view
@@ -240,7 +240,9 @@ -- the same name. mkData :: Con -> Q Dec mkData (NormalC n _) =-#if MIN_VERSION_template_haskell(2,11,0)+#if MIN_VERSION_template_haskell(2,12,0)+ dataD (cxt []) (remakeName n) [] Nothing [] []+#elif MIN_VERSION_template_haskell(2,11,0) dataD (cxt []) (remakeName n) [] Nothing [] (cxt []) #else dataD (cxt []) (remakeName n) [] [] []