| Portability | portable | 
|---|---|
| Stability | experimental | 
| Maintainer | Ralf Laemmel, Joost Visser | 
| Safe Haskell | None | 
Data.Generics.Strafunski.StrategyLib.KeyholeTheme
Description
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.
Arguments
| :: (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.
Arguments
| :: (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.