| Copyright | (c) 2010-2011 Patrick Bahr | 
|---|---|
| License | BSD3 | 
| Maintainer | Patrick Bahr <paba@diku.dk> | 
| Stability | experimental | 
| Portability | non-portable (GHC Extensions) | 
| Safe Haskell | None | 
| Language | Haskell98 | 
Data.Comp.Matching
Description
This module implements matching of contexts or terms with variables againts terms
Documentation
matchCxt :: (Ord v, EqF f, Eq (Cxt h f a), Functor f, Foldable f) => Context f v -> Cxt h f a -> Maybe (CxtSubst h a f v) Source #
This function takes a context c as the first argument and tries
to match it against the term t (or in general a context with holes
in a). The context c matches the term t if there is a
matching substitution s that maps holes to terms (resp. contexts in general)
such that if the holes in the context c are replaced according to
the substitution s, the term t is obtained. Note that the context
c might be non-linear, i.e. has multiple holes that are
equal. According to the above definition this means that holes with
equal holes have to be instantiated by equal terms! 
matchTerm :: (Ord v, EqF f, Eq (Cxt h f a), Traversable f, HasVars f v) => Term f -> Cxt h f a -> Maybe (CxtSubst h a f v) Source #
This function is similar to matchCxt but instead of a context it
matches a term with variables against a context.  
module Data.Comp.Variables