transformations-0.1.0.0: Generic representation of tree transformations

Safe HaskellSafe-Inferred

Generics.MultiRec.Rewriting.Rules

Synopsis

Documentation

data RuleSpec a Source

Specifies a rule as a value of a datatype.

Constructors

a :~> a 

Instances

Builder phi (RuleSpec a) 

lhsR :: RuleSpec a -> aSource

Returns the left-hand side of a rule.

rhsR :: RuleSpec a -> aSource

Returns the right-hand side of a rule.

type Ext phi = K Metavar :+: PF phiSource

Extends a pattern functor with a case for a metavariable.

type Scheme phi = HFix (Ext phi)Source

Recursively extends a type with a case for a metavariable.

data Rule phi a whereSource

Allows metavariables on either side of a rule.

Constructors

Rule :: phi ix -> RuleSpec (Scheme phi ix) -> Rule phi ix 

metavar :: phi ix -> Metavar -> Scheme phi ixSource

Constructs a metavariable.

pf :: phi ix -> PF phi (Scheme phi) ix -> Scheme phi ixSource

class Builder phi a whereSource

Associated Types

type Target a :: *Source

Methods

base :: phi (Target a) -> a -> RuleSpec (Target a)Source

diag :: phi (Target a) -> a -> [RuleSpec (Target a)]Source

Instances

Builder phi (RuleSpec a) 
(Builder phi a, Fam phi, LR phi (PF phi), El phi b) => Builder phi (b -> a) 

rule :: forall phi r. (Fam phi, Builder phi r, HZip phi (PF phi), El phi (Target r), EqS phi, HFunctor phi (PF phi)) => r -> Rule phi (Target r)Source

mergeSchemes :: HZip phi (PF phi) => phi ix -> Scheme phi ix -> Scheme phi ix -> Scheme phi ixSource

insertMVar :: forall phi ix. (Fam phi, HZip phi (PF phi), El phi ix) => Metavar -> phi ix -> I0 ix -> I0 ix -> Scheme phi ixSource