definitive-base-2.3: The base modules of the Definitive framework.

Safe HaskellNone
LanguageHaskell2010

Algebra.Monad.Logic

Documentation

newtype LogicT m a Source

Constructors

LogicT 

Fields

runLogicT :: forall r. (a -> m r -> m r) -> m r -> m r
 

class Monad m => MonadLogic l m | l -> m where Source

Methods

deduce :: l a -> m (Maybe (a, l a)) Source

induce :: m (Maybe (a, l a)) -> l a Source

Instances

Monad m => MonadLogic (LogicT m) m 

listLogic :: (MonadLogic l m, MonadLogic l' n) => Iso (l a) (l' b) (m [a]) (n [b]) Source

deduceMany :: MonadLogic l m => Int -> l a -> m [a] Source

deduceAll :: MonadLogic l m => l a -> m [a] Source

choose :: MonadLogic l m => [a] -> l a Source