Portability | portable (depends on ghc) |
---|---|
Stability | provisional |
Maintainer | bastiaan.heeren@ou.nl |
Safe Haskell | None |
A context for a term that maintains an environment of key-value pairs. A context is both showable and parsable.
- data Context a
- newContext :: Environment -> ContextNavigator a -> Context a
- fromContext :: Monad m => Context a -> m a
- fromContextWith :: Monad m => (a -> b) -> Context a -> m b
- fromContextWith2 :: Monad m => (a -> b -> c) -> Context a -> Context b -> m c
- data Location
- location :: Navigator a => a -> Location
- data ContextNavigator a
- noNavigator :: a -> ContextNavigator a
- navigator :: Uniplate a => a -> ContextNavigator a
- termNavigator :: IsTerm a => a -> ContextNavigator a
- liftToContext :: LiftView f => f a -> f (Context a)
- contextView :: View (Context a) (a, Context a)
- use :: (LiftView f, IsTerm a, IsTerm b) => f a -> f (Context b)
- useC :: (LiftView f, IsTerm a, IsTerm b) => f (Context a) -> f (Context b)
- applyTop :: (a -> a) -> Context a -> Context a
- currentTerm :: Context a -> Maybe Term
- changeTerm :: (Term -> Maybe Term) -> Context a -> Maybe (Context a)
- replaceInContext :: a -> Context a -> Context a
- currentInContext :: Context a -> Maybe a
- changeInContext :: (a -> a) -> Context a -> Context a
Abstract data type
Abstract data type for a context: a context stores an envrionent (key-value pairs) and a value
newContext :: Environment -> ContextNavigator a -> Context aSource
Construct a context
fromContext :: Monad m => Context a -> m aSource
fromContextWith :: Monad m => (a -> b) -> Context a -> m bSource
fromContextWith2 :: Monad m => (a -> b -> c) -> Context a -> Context b -> m cSource
Context navigator
data ContextNavigator a Source
noNavigator :: a -> ContextNavigator aSource
navigator :: Uniplate a => a -> ContextNavigator aSource
termNavigator :: IsTerm a => a -> ContextNavigator aSource
Lifting
liftToContext :: LiftView f => f a -> f (Context a)Source
Lift a rule to operate on a term in a context
contextView :: View (Context a) (a, Context a)Source
applyTop :: (a -> a) -> Context a -> Context aSource
Apply a function at top-level. Afterwards, try to return the focus to the old position
currentTerm :: Context a -> Maybe TermSource
replaceInContext :: a -> Context a -> Context aSource
currentInContext :: Context a -> Maybe aSource
changeInContext :: (a -> a) -> Context a -> Context aSource