Control.Monad.Logic (original) (raw)
Contents
Synopsis
- module Control.Monad.Logic.Class
- type Logic = LogicT Identity
- logic :: (forall r. (a -> r -> r) -> r -> r) -> Logic a
- runLogic :: Logic a -> (a -> r -> r) -> r -> r
- observe :: Logic a -> a
- observeMany :: Int -> Logic a -> [a]
- observeAll :: Logic a -> [a]
- newtype LogicT m a = LogicT {
- unLogicT :: forall r. (a -> m r -> m r) -> m r -> m r
}
- unLogicT :: forall r. (a -> m r -> m r) -> m r -> m r
- runLogicT :: LogicT m a -> (a -> m r -> m r) -> m r -> m r
- observeT :: Monad m => LogicT m a -> m a
- observeManyT :: Monad m => Int -> LogicT m a -> m [a]
- observeAllT :: Monad m => LogicT m a -> m [a]
- module Control.Monad
- module Control.Monad.Trans
Documentation
logic :: (forall r. (a -> r -> r) -> r -> r) -> Logic aSource
A smart constructor for Logic computations.
runLogic :: Logic a -> (a -> r -> r) -> r -> rSource
Runs a Logic computation with the specified initial success and failure continuations.
The LogicT monad transformer
newtype LogicT m a Source
A monad transformer for performing backtracking computations layered over another monad m
runLogicT :: LogicT m a -> (a -> m r -> m r) -> m r -> m rSource
Runs a LogicT computation with the specified initial success and failure continuations.