deep-transformations-0.2: Deep natural and unnatural tree transformations, including attribute grammars
Safe HaskellNone
LanguageHaskell2010

Transformation.Full

Description

Type classes Functor, Foldable, and Traversable that correspond to the standard type classes of the same name, but applying the given transformation to the given tree node and all its descendants. The corresponding classes in the Transformation.Shallow moduleo perate only on the immediate children, while those from the Transformation.Deep module exclude the argument node itself.

Synopsis

Documentation

class (Transformation t, Functor (g (Domain t))) => Functor t g where Source #

Like Transformation.Deep.Functor except it maps an additional wrapper around the entire tree

Methods

(<$>) :: t -> Domain t (g (Domain t) (Domain t)) -> Codomain t (g (Codomain t) (Codomain t)) infixl 4 Source #

Instances

Instances details
(Transformation (Keep t), Domain (Keep t) ~ f, Functor f, Codomain (Keep t) ~ PreservingSemantics f a, Functor f, Functor (Keep t) g, At (Keep t) (g (PreservingSemantics f a) (PreservingSemantics f a))) => Functor (Keep t) g Source # 
Instance details

Defined in Transformation.AG.Monomorphic

Methods

(<$>) :: Keep t -> Domain (Keep t) (g (Domain (Keep t)) (Domain (Keep t))) -> Codomain (Keep t) (g (Codomain (Keep t)) (Codomain (Keep t))) Source #

(Transformation (Auto t), Domain (Auto t) ~ f, Functor f, Codomain (Auto t) ~ Semantics (Auto t), Functor (Auto t) g, At (Auto t) (g (Semantics (Auto t)) (Semantics (Auto t)))) => Functor (Auto t) g Source # 
Instance details

Defined in Transformation.AG.Monomorphic

Methods

(<$>) :: Auto t -> Domain (Auto t) (g (Domain (Auto t)) (Domain (Auto t))) -> Codomain (Auto t) (g (Codomain (Auto t)) (Codomain (Auto t))) Source #

(Transformation (Keep t), Domain (Keep t) ~ f, Functor f, Codomain (Keep t) ~ PreservingSemantics (Keep t) f, Functor f, Functor (Keep t) g, At (Keep t) (g (PreservingSemantics (Keep t) f) (PreservingSemantics (Keep t) f))) => Functor (Keep t) g Source # 
Instance details

Defined in Transformation.AG.Generics

Methods

(<$>) :: Keep t -> Domain (Keep t) (g (Domain (Keep t)) (Domain (Keep t))) -> Codomain (Keep t) (g (Codomain (Keep t)) (Codomain (Keep t))) Source #

(Transformation (Auto t), Domain (Auto t) ~ f, Functor f, Codomain (Auto t) ~ Semantics (Auto t), Functor (Auto t) g, At (Auto t) (g (Semantics (Auto t)) (Semantics (Auto t)))) => Functor (Auto t) g Source # 
Instance details

Defined in Transformation.AG.Generics

Methods

(<$>) :: Auto t -> Domain (Auto t) (g (Domain (Auto t)) (Domain (Auto t))) -> Codomain (Auto t) (g (Codomain (Auto t)) (Codomain (Auto t))) Source #

(Functor (Map p q) g, Functor p) => Functor (Map p q) g Source # 
Instance details

Defined in Transformation.Rank2

Methods

(<$>) :: Map p q -> Domain (Map p q) (g (Domain (Map p q)) (Domain (Map p q))) -> Codomain (Map p q) (g (Codomain (Map p q)) (Codomain (Map p q))) Source #

class (Transformation t, Foldable (g (Domain t))) => Foldable t g where Source #

Like Transformation.Deep.Foldable except the entire tree is also wrapped

Methods

foldMap :: (Codomain t ~ Const m, Monoid m) => t -> Domain t (g (Domain t) (Domain t)) -> m Source #

class (Transformation t, Traversable (g (Domain t))) => Traversable t g where Source #

Like Transformation.Deep.Traversable except it traverses an additional wrapper around the entire tree

Methods

traverse :: Codomain t ~ Compose m f => t -> Domain t (g (Domain t) (Domain t)) -> m (f (g f f)) Source #

Instances

Instances details
(Transformation (Keep t), Domain (Keep t) ~ f, Traversable f, Traversable (g f), Codomain (Keep t) ~ PreservingSemantics f a, Traversable (Feeder a f) g, Functor (Keep t) g, At (Keep t) (g (PreservingSemantics f a) (PreservingSemantics f a))) => Traversable (Keep t) g Source # 
Instance details

Defined in Transformation.AG.Monomorphic

Methods

traverse :: Codomain (Keep t) ~ Compose m f => Keep t -> Domain (Keep t) (g (Domain (Keep t)) (Domain (Keep t))) -> m (f (g f f)) Source #

(Traversable f, Traversable (Feeder a f) g) => Traversable (Feeder a f) g Source # 
Instance details

Defined in Transformation.AG.Monomorphic

Methods

traverse :: Codomain (Feeder a f) ~ Compose m f0 => Feeder a f -> Domain (Feeder a f) (g (Domain (Feeder a f)) (Domain (Feeder a f))) -> m (f0 (g f0 f0)) Source #

fmap :: Functor t g => t -> Domain t (g (Domain t) (Domain t)) -> Codomain t (g (Codomain t) (Codomain t)) Source #

Alphabetical synonym for <$>

mapDownDefault :: (Functor t g, t `At` g (Domain t) (Domain t), Functor (Codomain t)) => t -> Domain t (g (Domain t) (Domain t)) -> Codomain t (g (Codomain t) (Codomain t)) Source #

Default implementation for <$> that maps the wrapper and then the tree

mapUpDefault :: (Functor t g, t `At` g (Codomain t) (Codomain t), Functor (Domain t)) => t -> Domain t (g (Domain t) (Domain t)) -> Codomain t (g (Codomain t) (Codomain t)) Source #

Default implementation for <$> that maps the tree and then the wrapper

foldMapDownDefault :: (t `At` g (Domain t) (Domain t), Foldable t g, Codomain t ~ Const m, Foldable (Domain t), Monoid m) => t -> Domain t (g (Domain t) (Domain t)) -> m Source #

Default implementation for foldMap that folds the wrapper and then the tree

foldMapUpDefault :: (t `At` g (Domain t) (Domain t), Foldable t g, Codomain t ~ Const m, Foldable (Domain t), Monoid m) => t -> Domain t (g (Domain t) (Domain t)) -> m Source #

Default implementation for foldMap that folds the tree and then the wrapper

traverseDownDefault :: (Traversable t g, t `At` g (Domain t) (Domain t), Codomain t ~ Compose m f, Traversable f, Monad m) => t -> Domain t (g (Domain t) (Domain t)) -> m (f (g f f)) Source #

Default implementation for traverse that traverses the wrapper and then the tree

traverseUpDefault :: (Traversable t g, Codomain t ~ Compose m f, t `At` g f f, Traversable (Domain t), Monad m) => t -> Domain t (g (Domain t) (Domain t)) -> m (f (g f f)) Source #

Default implementation for traverse that traverses the tree and then the wrapper