logict-state- Library for logic programming based on haskell package logict

Safe HaskellSafe




class (MonadLogic m, Monad ms, MonadState (f gs bs) m) => MonadLogicState f gs bs ms m | m -> ms where Source #

API for MonadLogic which allows state and backtracking on it.


backtrackWithRoll Source #


:: (gs -> bs -> bs -> ms bs)


-> m a 
-> m (m a) 

Return argument monad with the current backtrackable part of the state remembered. If the default def is not overridden this a no-op. This function complements mplus for LogicT, mplus backtracks on results, not on state, which is what this function should do. roll accepts the end state of the backtrack attempt resp the state to backtrack to, returns to state to backtrack to.

backtrack :: m a -> m (m a) Source #

special case of backtrackWith

Monad m => MonadLogicState (,) gs bs m (LogicStateT gs bs m) Source # 
Instance details

Defined in Control.Monad.LogicState


backtrackWithRoll :: (gs -> bs -> bs -> m bs) -> LogicStateT gs bs m a -> LogicStateT gs bs m (LogicStateT gs bs m a) Source #

backtrack :: LogicStateT gs bs m a -> LogicStateT gs bs m (LogicStateT gs bs m a) Source #