deep-transformations 0.2.2 → 0.2.3
raw patch · 7 files changed
+24/−15 lines, 7 filesdep ~template-haskellPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: template-haskell
API changes (from Hackage documentation)
- Transformation.AG.Dimorphic: instance (Data.Traversable.Traversable f, Transformation.Deep.Traversable (Transformation.AG.Dimorphic.Feeder a b f) g) => Transformation.Full.Traversable (Transformation.AG.Dimorphic.Feeder a b f) g
- Transformation.AG.Dimorphic: instance (Transformation.Transformation (Transformation.AG.Dimorphic.Auto t), Transformation.Domain (Transformation.AG.Dimorphic.Auto t) GHC.Types.~ f, GHC.Base.Functor f, Transformation.Codomain (Transformation.AG.Dimorphic.Auto t) GHC.Types.~ Transformation.AG.Dimorphic.Semantics a b, Transformation.Deep.Functor (Transformation.AG.Dimorphic.Auto t) g, Transformation.At (Transformation.AG.Dimorphic.Auto t) (g (Transformation.AG.Dimorphic.Semantics a b) (Transformation.AG.Dimorphic.Semantics a b))) => Transformation.Full.Functor (Transformation.AG.Dimorphic.Auto t) g
- Transformation.AG.Dimorphic: instance (Transformation.Transformation (Transformation.AG.Dimorphic.Keep t), Transformation.Domain (Transformation.AG.Dimorphic.Keep t) GHC.Types.~ f, GHC.Base.Functor f, Transformation.Codomain (Transformation.AG.Dimorphic.Keep t) GHC.Types.~ Transformation.AG.Dimorphic.PreservingSemantics f a b, GHC.Base.Functor f, Transformation.Deep.Functor (Transformation.AG.Dimorphic.Keep t) g, Transformation.At (Transformation.AG.Dimorphic.Keep t) (g (Transformation.AG.Dimorphic.PreservingSemantics f a b) (Transformation.AG.Dimorphic.PreservingSemantics f a b))) => Transformation.Full.Functor (Transformation.AG.Dimorphic.Keep t) g
- Transformation.AG.Generics: instance (Transformation.Transformation (Transformation.AG.Generics.Auto t), Transformation.Domain (Transformation.AG.Generics.Auto t) GHC.Types.~ f, GHC.Base.Functor f, Transformation.Codomain (Transformation.AG.Generics.Auto t) GHC.Types.~ Transformation.AG.Semantics (Transformation.AG.Generics.Auto t), Transformation.Deep.Functor (Transformation.AG.Generics.Auto t) g, Transformation.At (Transformation.AG.Generics.Auto t) (g (Transformation.AG.Semantics (Transformation.AG.Generics.Auto t)) (Transformation.AG.Semantics (Transformation.AG.Generics.Auto t)))) => Transformation.Full.Functor (Transformation.AG.Generics.Auto t) g
- Transformation.AG.Generics: instance (Transformation.Transformation (Transformation.AG.Generics.Keep t), Transformation.Domain (Transformation.AG.Generics.Keep t) GHC.Types.~ f, GHC.Base.Functor f, Transformation.Codomain (Transformation.AG.Generics.Keep t) GHC.Types.~ Transformation.AG.PreservingSemantics (Transformation.AG.Generics.Keep t) f, GHC.Base.Functor f, Transformation.Deep.Functor (Transformation.AG.Generics.Keep t) g, Transformation.At (Transformation.AG.Generics.Keep t) (g (Transformation.AG.PreservingSemantics (Transformation.AG.Generics.Keep t) f) (Transformation.AG.PreservingSemantics (Transformation.AG.Generics.Keep t) f))) => Transformation.Full.Functor (Transformation.AG.Generics.Keep t) g
- Transformation.AG.Monomorphic: instance (Transformation.Transformation (Transformation.AG.Monomorphic.Auto t), Transformation.Domain (Transformation.AG.Monomorphic.Auto t) GHC.Types.~ f, GHC.Base.Functor f, Transformation.Codomain (Transformation.AG.Monomorphic.Auto t) GHC.Types.~ Transformation.AG.Monomorphic.Semantics a, Transformation.Deep.Functor (Transformation.AG.Monomorphic.Auto t) g, Transformation.At (Transformation.AG.Monomorphic.Auto t) (g (Transformation.AG.Monomorphic.Semantics a) (Transformation.AG.Monomorphic.Semantics a))) => Transformation.Full.Functor (Transformation.AG.Monomorphic.Auto t) g
- Transformation.AG.Monomorphic: instance (Transformation.Transformation (Transformation.AG.Monomorphic.Keep t), Transformation.Domain (Transformation.AG.Monomorphic.Keep t) GHC.Types.~ f, GHC.Base.Functor f, Transformation.Codomain (Transformation.AG.Monomorphic.Keep t) GHC.Types.~ Transformation.AG.Monomorphic.PreservingSemantics f a, GHC.Base.Functor f, Transformation.Deep.Functor (Transformation.AG.Monomorphic.Keep t) g, Transformation.At (Transformation.AG.Monomorphic.Keep t) (g (Transformation.AG.Monomorphic.PreservingSemantics f a) (Transformation.AG.Monomorphic.PreservingSemantics f a))) => Transformation.Full.Functor (Transformation.AG.Monomorphic.Keep t) g
- Transformation.Rank2: instance (Transformation.Deep.Functor (Transformation.Rank2.Map p q) g, GHC.Base.Functor p) => Transformation.Full.Functor (Transformation.Rank2.Map p q) g
+ Transformation.AG.Dimorphic: instance (Data.Traversable.Traversable f, Rank2.Traversable (g (Transformation.AG.Dimorphic.FeederDomain a b f)), Transformation.Deep.Traversable (Transformation.AG.Dimorphic.Feeder a b f) g) => Transformation.Full.Traversable (Transformation.AG.Dimorphic.Feeder a b f) g
+ Transformation.AG.Dimorphic: instance (Transformation.Transformation (Transformation.AG.Dimorphic.Auto t), Transformation.Domain (Transformation.AG.Dimorphic.Auto t) GHC.Types.~ f, GHC.Base.Functor f, Transformation.Codomain (Transformation.AG.Dimorphic.Auto t) GHC.Types.~ Transformation.AG.Dimorphic.Semantics a b, Rank2.Functor (g f), Transformation.Deep.Functor (Transformation.AG.Dimorphic.Auto t) g, Transformation.At (Transformation.AG.Dimorphic.Auto t) (g (Transformation.AG.Dimorphic.Semantics a b) (Transformation.AG.Dimorphic.Semantics a b))) => Transformation.Full.Functor (Transformation.AG.Dimorphic.Auto t) g
+ Transformation.AG.Dimorphic: instance (Transformation.Transformation (Transformation.AG.Dimorphic.Keep t), Transformation.Domain (Transformation.AG.Dimorphic.Keep t) GHC.Types.~ f, GHC.Base.Functor f, Transformation.Codomain (Transformation.AG.Dimorphic.Keep t) GHC.Types.~ Transformation.AG.Dimorphic.PreservingSemantics f a b, Rank2.Functor (g f), Transformation.Deep.Functor (Transformation.AG.Dimorphic.Keep t) g, Transformation.At (Transformation.AG.Dimorphic.Keep t) (g (Transformation.AG.Dimorphic.PreservingSemantics f a b) (Transformation.AG.Dimorphic.PreservingSemantics f a b))) => Transformation.Full.Functor (Transformation.AG.Dimorphic.Keep t) g
+ Transformation.AG.Dimorphic: type FeederDomain a b f = Compose ((->) a) (Compose ((,) (Atts a b)) f)
+ Transformation.AG.Generics: instance (Transformation.Transformation (Transformation.AG.Generics.Auto t), Transformation.Domain (Transformation.AG.Generics.Auto t) GHC.Types.~ f, GHC.Base.Functor f, Transformation.Codomain (Transformation.AG.Generics.Auto t) GHC.Types.~ Transformation.AG.Semantics (Transformation.AG.Generics.Auto t), Rank2.Functor (g f), Transformation.Deep.Functor (Transformation.AG.Generics.Auto t) g, Transformation.At (Transformation.AG.Generics.Auto t) (g (Transformation.AG.Semantics (Transformation.AG.Generics.Auto t)) (Transformation.AG.Semantics (Transformation.AG.Generics.Auto t)))) => Transformation.Full.Functor (Transformation.AG.Generics.Auto t) g
+ Transformation.AG.Generics: instance (Transformation.Transformation (Transformation.AG.Generics.Keep t), Transformation.Domain (Transformation.AG.Generics.Keep t) GHC.Types.~ f, GHC.Base.Functor f, Transformation.Codomain (Transformation.AG.Generics.Keep t) GHC.Types.~ Transformation.AG.PreservingSemantics (Transformation.AG.Generics.Keep t) f, GHC.Base.Functor f, Rank2.Functor (g f), Transformation.Deep.Functor (Transformation.AG.Generics.Keep t) g, Transformation.At (Transformation.AG.Generics.Keep t) (g (Transformation.AG.PreservingSemantics (Transformation.AG.Generics.Keep t) f) (Transformation.AG.PreservingSemantics (Transformation.AG.Generics.Keep t) f))) => Transformation.Full.Functor (Transformation.AG.Generics.Keep t) g
+ Transformation.AG.Monomorphic: instance (Transformation.Transformation (Transformation.AG.Monomorphic.Auto t), Transformation.Domain (Transformation.AG.Monomorphic.Auto t) GHC.Types.~ f, GHC.Base.Functor f, Transformation.Codomain (Transformation.AG.Monomorphic.Auto t) GHC.Types.~ Transformation.AG.Monomorphic.Semantics a, Rank2.Functor (g f), Transformation.Deep.Functor (Transformation.AG.Monomorphic.Auto t) g, Transformation.At (Transformation.AG.Monomorphic.Auto t) (g (Transformation.AG.Monomorphic.Semantics a) (Transformation.AG.Monomorphic.Semantics a))) => Transformation.Full.Functor (Transformation.AG.Monomorphic.Auto t) g
+ Transformation.AG.Monomorphic: instance (Transformation.Transformation (Transformation.AG.Monomorphic.Keep t), Transformation.Domain (Transformation.AG.Monomorphic.Keep t) GHC.Types.~ f, GHC.Base.Functor f, Transformation.Codomain (Transformation.AG.Monomorphic.Keep t) GHC.Types.~ Transformation.AG.Monomorphic.PreservingSemantics f a, GHC.Base.Functor f, Rank2.Functor (g f), Transformation.Deep.Functor (Transformation.AG.Monomorphic.Keep t) g, Transformation.At (Transformation.AG.Monomorphic.Keep t) (g (Transformation.AG.Monomorphic.PreservingSemantics f a) (Transformation.AG.Monomorphic.PreservingSemantics f a))) => Transformation.Full.Functor (Transformation.AG.Monomorphic.Keep t) g
+ Transformation.Rank2: instance (Rank2.Functor (g p), Transformation.Deep.Functor (Transformation.Rank2.Map p q) g, GHC.Base.Functor p) => Transformation.Full.Functor (Transformation.Rank2.Map p q) g
Files
- CHANGELOG.md +6/−0
- deep-transformations.cabal +2/−2
- src/Transformation/AG/Dimorphic.hs +8/−5
- src/Transformation/AG/Generics.hs +2/−3
- src/Transformation/AG/Monomorphic.hs +2/−2
- src/Transformation/Rank2.hs +2/−1
- src/Transformation/Shallow/TH.hs +2/−2
CHANGELOG.md view
@@ -1,5 +1,11 @@ # Revision history for deep-transformations +## 0.2.3 -- 2024-05-18++* Bumped the upper bound of the template-haskell dependency+* Generalized the TH generation code+* Fixed the loopy superclass constraints in instance declarations+ ## 0.2.2 -- 2023-06-25 * Updated for GHC 9.8.1 and TH 2.22
deep-transformations.cabal view
@@ -2,7 +2,7 @@ -- documentation, see http://haskell.org/cabal/users-guide/ name: deep-transformations-version: 0.2.2+version: 0.2.3 synopsis: Deep natural and unnatural tree transformations, including attribute grammars description: @@ -45,7 +45,7 @@ ghc-options: -Wall build-depends: base >= 4.11 && < 5, rank2classes >= 1.4.1 && < 1.6, transformers >= 0.5 && < 0.7,- template-haskell >= 2.11 && < 2.22, generic-lens >= 1.2 && < 2.3+ template-haskell >= 2.11 && < 2.23, generic-lens >= 1.2 && < 2.3 default-language: Haskell2010 test-suite doctests
src/Transformation/AG/Dimorphic.hs view
@@ -63,12 +63,12 @@ {-# INLINE ($) #-} instance (Transformation (Auto t), Domain (Auto t) ~ f, Functor f, Codomain (Auto t) ~ Semantics a b,- Deep.Functor (Auto t) g, Auto t `At` g (Semantics a b) (Semantics a b)) =>+ Rank2.Functor (g f), Deep.Functor (Auto t) g, Auto t `At` g (Semantics a b) (Semantics a b)) => Full.Functor (Auto t) g where (<$>) = Full.mapUpDefault instance (Transformation (Keep t), Domain (Keep t) ~ f, Functor f, Codomain (Keep t) ~ PreservingSemantics f a b,- Functor f, Deep.Functor (Keep t) g,+ Rank2.Functor (g f), Deep.Functor (Keep t) g, Keep t `At` g (PreservingSemantics f a b) (PreservingSemantics f a b)) => Full.Functor (Keep t) g where (<$>) = Full.mapUpDefault@@ -142,13 +142,16 @@ data Feeder a b (f :: Type -> Type) = Feeder +type FeederDomain a b f = Compose ((->) a) (Compose ((,) (Atts a b)) f)+ instance Transformation (Feeder a b f) where- type Domain (Feeder a b f) = Compose ((->) a) (Compose ((,) (Atts a b)) f)- type Codomain (Feeder a b f) = Compose ((->) a) (Compose ((,) (Atts a b)) f)+ type Domain (Feeder a b f) = FeederDomain a b f+ type Codomain (Feeder a b f) = FeederDomain a b f instance Transformation.At (Feeder a b f) g where Feeder $ x = x -instance (Traversable f, Deep.Traversable (Feeder a b f) g) => Full.Traversable (Feeder a b f) g where+instance (Traversable f, Rank2.Traversable (g (FeederDomain a b f)), Deep.Traversable (Feeder a b f) g) =>+ Full.Traversable (Feeder a b f) g where traverse t x inheritance = Compose (atts{inh= inheritance}, traverse (Deep.traverse t) y (inh atts)) where Compose (atts, y) = getCompose x inheritance
src/Transformation/AG/Generics.hs view
@@ -26,7 +26,6 @@ import Data.Kind (Type) import Data.Generics.Product.Subtype (Subtype(upcast)) import Data.Proxy (Proxy(..))-import Data.Semigroup (Semigroup(..)) import GHC.Generics import GHC.Records import GHC.TypeLits (Symbol, ErrorMessage (Text), TypeError)@@ -72,12 +71,12 @@ {-# INLINE ($) #-} instance (Transformation (Auto t), Domain (Auto t) ~ f, Functor f, Codomain (Auto t) ~ Semantics (Auto t),- Deep.Functor (Auto t) g, Auto t `At` g (Semantics (Auto t)) (Semantics (Auto t))) =>+ Rank2.Functor (g f), Deep.Functor (Auto t) g, Auto t `At` g (Semantics (Auto t)) (Semantics (Auto t))) => Full.Functor (Auto t) g where (<$>) = Full.mapUpDefault instance (Transformation (Keep t), Domain (Keep t) ~ f, Functor f, Codomain (Keep t) ~ PreservingSemantics (Keep t) f,- Functor f, Deep.Functor (Keep t) g,+ Functor f, Rank2.Functor (g f), Deep.Functor (Keep t) g, Keep t `At` g (PreservingSemantics (Keep t) f) (PreservingSemantics (Keep t) f)) => Full.Functor (Keep t) g where (<$>) = Full.mapUpDefault
src/Transformation/AG/Monomorphic.hs view
@@ -63,12 +63,12 @@ {-# INLINE ($) #-} instance (Transformation (Auto t), Domain (Auto t) ~ f, Functor f, Codomain (Auto t) ~ Semantics a,- Deep.Functor (Auto t) g, Auto t `At` g (Semantics a) (Semantics a)) =>+ Rank2.Functor (g f), Deep.Functor (Auto t) g, Auto t `At` g (Semantics a) (Semantics a)) => Full.Functor (Auto t) g where (<$>) = Full.mapUpDefault instance (Transformation (Keep t), Domain (Keep t) ~ f, Functor f, Codomain (Keep t) ~ PreservingSemantics f a,- Functor f, Deep.Functor (Keep t) g,+ Functor f, Rank2.Functor (g f), Deep.Functor (Keep t) g, Keep t `At` g (PreservingSemantics f a) (PreservingSemantics f a)) => Full.Functor (Keep t) g where (<$>) = Full.mapUpDefault
src/Transformation/Rank2.hs view
@@ -7,6 +7,7 @@ import Data.Functor.Compose (Compose(Compose)) import Data.Functor.Const (Const(Const))+import qualified Rank2 import Transformation (Transformation, Domain, Codomain) import qualified Transformation import qualified Transformation.Deep as Deep@@ -52,5 +53,5 @@ instance Transformation.At (Traversal p q m) x where ($) (Traversal f) = Compose . f -instance (Deep.Functor (Map p q) g, Functor p) => Full.Functor (Map p q) g where+instance (Rank2.Functor (g p), Deep.Functor (Map p q) g, Functor p) => Full.Functor (Map p q) g where (<$>) = Full.mapUpDefault
src/Transformation/Shallow/TH.hs view
@@ -105,12 +105,12 @@ tyVars' <- traverse reifyTVKindSynonyms tyVars #if MIN_VERSION_template_haskell(2,17,0)- let (KindedTV tyVar _ (AppT (AppT ArrowT StarT) StarT) : _) = reverse tyVars'+ let (KindedTV tyVar _ (AppT (AppT ArrowT _) StarT) : _) = reverse tyVars' instanceType = foldl apply (conT tyConName) (reverse $ drop 1 $ reverse tyVars') apply t (PlainTV name _) = appT t (varT name) apply t (KindedTV name _ _) = appT t (varT name) #else- let (KindedTV tyVar (AppT (AppT ArrowT StarT) StarT) : _) = reverse tyVars'+ let (KindedTV tyVar (AppT (AppT ArrowT _) StarT) : _) = reverse tyVars' instanceType = foldl apply (conT tyConName) (reverse $ drop 1 $ reverse tyVars') apply t (PlainTV name) = appT t (varT name) apply t (KindedTV name _) = appT t (varT name)