term-rewriting-0.2: Term Rewriting Library

Safe HaskellSafe-Inferred
LanguageHaskell98

Data.Rewriting.Term.Type

Synopsis

Documentation

data Term f v Source

Constructors

Var v

Variable

Fun f [Term f v]

Function application

Instances

(Eq f, Eq v) => Eq (Term f v) 
(Ord f, Ord v) => Ord (Term f v) 
(Show f, Show v) => Show (Term f v) 
(Pretty f, Pretty v) => Pretty (Term f v) 

fold :: (v -> a) -> (f -> [a] -> a) -> Term f v -> a Source

Folding terms.

>>> fold (\v -> 1) (\f xs -> 1 + sum xs) (Fun 'f' [Var 1, Fun 'g' []])
3 -- size of the given term

map :: (f -> f') -> (v -> v') -> Term f v -> Term f' v' Source

Mapping terms: Rename function symbols and variables.

>>> map succ pred (Fun 'f' [Var 2, Fun 'g' []])
Fun 'e' [Var 3,Fun 'f' []]