Control.CFLP
Documentation
class (MonadUpdate s m, Update s m m, ChoiceStore s) => CFLP s m Source
Instances
| MonadPlus m => MonadUpdate s (UpdateT s m) | |
| CFLP ChoiceStoreIM (UpdateT ChoiceStoreIM []) | |
| MonadPlus m => Update s (UpdateT s m) m | |
| MonadPlus m => Update s (UpdateT s m) (UpdateT s m) | |
| MonadTrans (UpdateT s) | |
| Monad m => Monad (UpdateT s m) | |
| Show (HeadNormalForm cs (UpdateT cs [])) | |
| MonadPlus m => MonadPlus (UpdateT s m) | |
| Show a => Show (UpdateT s [] a) | |
| Show (Nondet cs (UpdateT cs []) a) |
class ChoiceStore s Source
Instances
| ChoiceStore ChoiceStoreIM |
eval :: (CFLP CS m, Update CS m m', Generic a) => Strategy m' -> (Context CS -> ID -> Nondet CS m a) -> IO [a]Source
evalPartial :: (CFLP CS m, Update CS m m', Generic a) => Strategy m' -> (Context CS -> ID -> Nondet CS m a) -> IO [a]Source
evalPrint :: (CFLP CS m, Update CS m m', Generic a) => Strategy m' -> (Context CS -> ID -> Nondet CS m a) -> IO ()Source
depthFirst :: Strategy []Source
data NormalForm Source
Instances
Instances
| With x (Nondet cs m a) | |
| (cs ~ Ctx b, m ~ Mon b, MkCons b) => MkCons (Nondet cs m a -> b) | |
| (cs ~ C a, m ~ M a, WithUntyped a) => WithUntyped (Nondet cs m b -> a) | |
| LiftFun (Nondet cs m b -> f) => LiftFun (Nondet cs m a -> Nondet cs m b -> f) | |
| LiftFun (Nondet cs m a -> Context cs -> ID -> Nondet cs m b) | |
| LiftFun (Nondet cs m a -> ID -> Nondet cs m b) | |
| LiftFun (Nondet cs m a -> Context cs -> Nondet cs m b) | |
| LiftFun (Nondet cs m a -> Nondet cs m b) | |
| (C f ~ cs, M f ~ m, NestLambda f) => NestLambda (Nondet cs m a -> f) | |
| Show (Nondet cs (UpdateT cs []) a) | |
| Show (Nondet cs [] a) | |
| Monad m => MkCons (Nondet cs m a) | |
| WithUntyped (Nondet cs m a) |
Constructors
| Context cs |
class ChoiceStore cs => Narrow cs a whereSource
Instances
| ChoiceStore cs => Narrow cs Bool | |
| (ChoiceStore cs, Narrow cs a, Generic a) => Narrow cs [a] |
oneOf :: (MonadUpdate cs m, ChoiceStore cs) => [Nondet cs m a] -> Context cs -> ID -> Nondet cs m aSource
(?) :: (MonadUpdate cs m, ChoiceStore cs) => Nondet cs m a -> Nondet cs m a -> ID -> Nondet cs m aSource
withHNF :: Update cs m m => Nondet cs m a -> (HeadNormalForm cs m -> Context cs -> Nondet cs m b) -> Context cs -> Nondet cs m bSource
caseOf_ :: Update cs m m => Nondet cs m a -> [Match a cs m b] -> Nondet cs m b -> Context cs -> Nondet cs m bSource
Instances
| (cs ~ C a, m ~ M a, b ~ T a, WithUntyped a, PatternList p) => PatternList (ConsPatList ((Context cs -> a) -> Match t cs m b) p) |
primitive :: Generic a => NormalForm -> aSource
generic :: Generic a => a -> NormalFormSource
type Decons a = ([NormalForm] -> NormalForm) -> Result a -> Maybe NormalFormSource
Methods
applyCons :: a -> [NormalForm] -> Result aSource
groundNormalForm :: Update cs m m' => Nondet cs m a -> Context cs -> m' NormalFormSource
partialNormalForm :: (Update cs m m', ChoiceStore cs) => Nondet cs m a -> Context cs -> m' NormalFormSource
data ConsPatList a b Source
Constructors
| a :! b |
Instances
| (cs ~ C a, m ~ M a, b ~ T a, WithUntyped a, PatternList p) => PatternList (ConsPatList ((Context cs -> a) -> Match t cs m b) p) | |
| (MkCons a, ConsList b) => ConsList (ConsPatList a b) |
constructors :: (ConsList a, Generic (CData a)) => aSource