Portability | portable |
---|---|
Stability | experimental |
Maintainer | Ralf Laemmel, Joost Visser |
Safe Haskell | None |
This module is part of StrategyLib
, a library of functional strategy
combinators, including combinators for generic traversal. This module
defines a number combinators for keyhole operations, i.e. for operations
that have ordinary parametric or adhoc polymorhpic types, but employ
strategies inside.
- selectFocus :: (Term f, Term t) => (f -> Maybe f) -> t -> Maybe f
- replaceFocus :: (Term t, Term t') => (t -> Maybe t) -> t' -> Maybe t'
- deleteFocus :: (Term f, Term [f], Term t) => (f -> Maybe f) -> t -> Maybe t
- selectHost :: (Term f, Term h, Term t) => (f -> Maybe f) -> (h -> Maybe h) -> t -> Maybe h
- markHost :: (Term f, Term h, Term t) => (f -> Bool) -> (h -> h) -> t -> Maybe t
- listify :: (Term x, Term y) => x -> [y]
- strings :: Term x => x -> [String]
- inj :: (MonadPlus m, Term x, Term c) => (c -> m c) -> x -> m x
Focus
Select the identified focus. Fails if no subterm can be selected.
replaceFocus :: (Term t, Term t') => (t -> Maybe t) -> t' -> Maybe t'Source
Replace the identified focus. Fails if no subterm can be replaced.
:: (Term f, Term [f], Term t) | |
=> (f -> Maybe f) | Identify focus |
-> t | Input term |
-> Maybe t | Output term without focused entity |
Delete the focus assuming it is an element in a list. Fails if no deletion can be performed.
:: (Term f, Term h, Term t) | |
=> (f -> Maybe f) | Get focus |
-> (h -> Maybe h) | Get host |
-> t | Input term |
-> Maybe h | Located host |
Find the host of the focused entity, i.e. a superterm of the focussed subterm.