StrategyLibContentsIndex
RefactoringTheme
Synopsis
class (Term abstr, Eq name, Term [abstr], Term apply) => Abstraction abstr name tpe apply | abstr -> name, abstr -> tpe, abstr -> apply, apply -> name, apply -> abstr where
getAbstrName :: abstr -> Maybe name
getAbstrParas :: abstr -> Maybe [(name, tpe)]
getAbstrBody :: abstr -> Maybe apply
getApplyName :: apply -> Maybe name
getApplyParas :: apply -> Maybe [(name, tpe)]
constrAbstr :: name -> [(name, tpe)] -> apply -> Maybe abstr
constrApply :: name -> [(name, tpe)] -> Maybe apply
eliminate :: (Term prog, Abstraction abstr name tpe apply) => TU [(name, tpe)] Identity -> TU [name] Identity -> (abstr -> Maybe abstr) -> prog -> Maybe prog
introduce :: (Term prog, Abstraction abstr name tpe apply) => TU [(name, tpe)] Identity -> TU [name] Identity -> ([abstr] -> Maybe [abstr]) -> abstr -> prog -> Maybe prog
extract :: (Term prog, Abstraction abstr name tpe apply) => TU [(name, tpe)] Identity -> TU [name] Identity -> (apply -> Maybe apply) -> ([abstr] -> [abstr]) -> ([abstr] -> Maybe [abstr]) -> ([(name, tpe)] -> apply -> Bool) -> name -> prog -> Maybe prog
Produced by Haddock version 0.6