CFLP
Documentation
class (Strategy (Ctx s) s, MonadPlus s, MonadUpdate (Ctx s) s, Update (Ctx s) s s, Update (Ctx s) s (Res s), MonadPlus (Res s), Enumerable (Res s)) => CFLP s Source
class Enumerable s whereSource
Methods
enumeration :: s a -> [a]Source
Instances
| Enumerable [] | |
| Enumerable m => Enumerable (Monadic m) | |
| Enumerable s => Enumerable (CTC s) | |
| Enumerable s => Enumerable (Depth s) | |
| Enumerable s => Enumerable (DepthLim s) |
evalPartial :: (Monad s, CFLP s, Generic a) => s (Ctx s) -> Computation a -> IO [a]Source
Constructors
| Monadic | |
Fields
| |
Instances
| MonadUpdate c m => MonadUpdate c (Monadic m) | |
| MonadPlus m => Strategy c (Monadic m) | |
| Update s m m' => Update s (Monadic m) (Monadic m') | |
| Monad m => Monad (Monadic m) | |
| MonadPlus m => MonadPlus (Monadic m) | |
| Enumerable m => Enumerable (Monadic m) | |
| (MonadPlus m, Enumerable m) => CFLP (Monadic (UpdateT () m)) | |
| (MonadPlus m, Enumerable m) => CFLP (CTC (Monadic (UpdateT (StoreCTC ()) m))) | |
| (MonadPlus m, Enumerable m) => CFLP (CTC (Depth (DepthLim (Monadic (UpdateT (StoreCTC (DepthCtx (DepthLimCtx ()))) m))))) |
Instances
| MonadPlus m => MonadUpdate s (UpdateT s m) | |
| MonadPlus m => Update s (UpdateT s m) m | |
| MonadPlus m => Update s (UpdateT s m) (UpdateT s m) | |
| MonadTrans (UpdateT s) | |
| (MonadPlus m, Enumerable m) => CFLP (Monadic (UpdateT () m)) | |
| (MonadPlus m, Enumerable m) => CFLP (CTC (Monadic (UpdateT (StoreCTC ()) m))) | |
| (MonadPlus m, Enumerable m) => CFLP (CTC (Depth (DepthLim (Monadic (UpdateT (StoreCTC (DepthCtx (DepthLimCtx ()))) m))))) | |
| 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) |
data NormalForm Source
Instances
Instances
| NestLambda cs m t (Nondet cs m b -> f) => NestLambda cs m (a -> t) (Nondet cs m a -> Nondet cs m b -> f) | |
| NestLambda cs m (a -> b) (Nondet cs m a -> Context cs -> ID -> Nondet cs m b) | |
| 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) | |
| 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 |
Instances
| NestLambda cs m (a -> b) (Nondet cs m a -> Context cs -> ID -> Nondet cs m b) | |
| (cs ~ C a, m ~ M a, b ~ T a, WithUntyped a, PatternList p) => PatternList (ConsPatList ((Context cs -> a) -> Match t cs m b) p) | |
| LiftFun (Nondet cs m a -> Context cs -> ID -> Nondet cs m b) | |
| LiftFun (Nondet cs m a -> Context cs -> Nondet cs m b) |
(?) :: (Monad s, Strategy c s, MonadUpdate c s) => Nondet c s a -> Nondet c s a -> ID -> Nondet c s aSource
withHNF :: (Monad m, Update cs m m) => Nondet cs m a -> (HeadNormalForm cs m -> Context cs -> Nondet cs m b) -> Context cs -> Nondet cs m bSource
caseOf :: (MonadPlus m, Update cs m m) => Nondet cs m a -> [Match a cs m b] -> Context cs -> Nondet cs m bSource
caseOf_ :: (Monad m, 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 :: (Monad s, Monad m, Update c s m) => s c -> Nondet c s a -> m NormalFormSource
partialNormalForm :: (Monad s, Strategy c s, Monad m, Update c s m) => s c -> Nondet c s a -> 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