| Copyright | (c) 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.Multi.Term
Description
This module defines the central notion of mutual recursive (or, higher-order) terms and its generalisation to (higher-order) contexts. All definitions are generalised versions of those in Data.Comp.Term.
Documentation
data Cxt h f a i where Source #
This data type represents contexts over a signature. Contexts are
 terms containing zero or more holes. The first type parameter is
 supposed to be one of the phantom types Hole and NoHole. The
 second parameter is the signature of the context. The third
 parameter is the type family of the holes. The last parameter is
 the index/label.
Instances
| HFunctor f => HFunctor (Cxt h f) Source # | |
| HFoldable f => HFoldable (Cxt h f) Source # | |
| HTraversable f => HTraversable (Cxt h f) Source # | |
| EqHF f => EqHF (Cxt h f) Source # | |
| (HFunctor f, OrdHF f) => OrdHF (Cxt h f) Source # | From an   | 
| (EqHF f, KEq a) => KEq (Cxt h f a) Source # | |
| (HFunctor f, OrdHF f, KOrd a) => KOrd (Cxt h f a) Source # | |
constTerm :: HFunctor f => Const f :-> Term f Source #
This function converts a constant to a term. This assumes that the argument is indeed a constant, i.e. does not have a value for the argument type of the functor f.
unTerm :: Term f t -> f (Term f) t Source #
This function unravels the given term at the topmost layer.