Portability | non-portable (multi-parameter type classes) |
---|---|
Stability | experimental |
Maintainer | dan.doel@gmail.com |
A backtracking, logic programming monad.
Adapted from the paper /Backtracking, Interleaving, and Terminating Monad Transformers/, by Oleg Kiselyov, Chung-chieh Shan, Daniel P. Friedman, Amr Sabry (http://www.cs.rutgers.edu/~ccshan/logicprog/LogicT-icfp2005.pdf).
- module Control.Monad.Logic.Class
- newtype Logic a = Logic {}
- 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 ans. SK (m ans) a -> FK (m ans) -> m ans
- 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
module Control.Monad.Logic.Class
The Logic monad
The basic Logic monad, for performing backtracking computations
returning values of type a
runLogic :: Logic a -> (a -> r -> r) -> r -> rSource
Runs a Logic computation with the specified initial success and failure continuations.
observeMany :: Int -> Logic a -> [a]Source
Extracts up to a given number of results from a Logic computation.
observeAll :: Logic a -> [a]Source
Extracts all results from a Logic computation.
The LogicT monad transformer
A monad transformer for performing backtracking computations
layered over another monad m
MonadTrans LogicT | |
MonadReader r m => MonadReader r (LogicT m) | |
MonadState s m => MonadState s (LogicT m) | |
MonadError e m => MonadError e (LogicT m) | |
Monad m => Monad (LogicT m) | |
Functor f => Functor (LogicT f) | |
Monad m => MonadPlus (LogicT m) | |
Applicative f => Applicative (LogicT f) | |
Applicative f => Alternative (LogicT f) | |
MonadIO m => MonadIO (LogicT m) | |
Monad m => MonadLogic (LogicT 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.
observeT :: Monad m => LogicT m a -> m aSource
Extracts the first result from a LogicT computation, failing otherwise.
observeManyT :: Monad m => Int -> LogicT m a -> m [a]Source
Extracts up to a given number of results from a LogicT computation.
observeAllT :: Monad m => LogicT m a -> m [a]Source
Extracts all results from a LogicT computation.
module Control.Monad
module Control.Monad.Trans