logict-state 0.1.0.5 → 0.1.1.0
raw patch · 4 files changed
+12/−7 lines, 4 filesdep ~logictPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: logict
API changes (from Hackage documentation)
+ Control.Monad.LogicState: instance Control.Monad.Fail.MonadFail (Control.Monad.LogicState.LogicStateT gs bs m)
- Control.Monad.LogicState: LogicStateT :: forall r. LogicContS gs bs r m a -> LogicStateT gs bs m a
+ Control.Monad.LogicState: LogicStateT :: (forall r. LogicContS gs bs r m a) -> LogicStateT gs bs m a
- Control.Monad.TransLogicState.Class: class TransLogicState s t
+ Control.Monad.TransLogicState.Class: class MonadTrans t => TransLogicState s t
- Control.Monad.TransLogicState.Class: observe :: (TransLogicState s t) => s -> t Identity a -> a
+ Control.Monad.TransLogicState.Class: observe :: TransLogicState s t => s -> t Maybe a -> Maybe a
- Control.Monad.TransLogicState.Class: observeAll :: (TransLogicState s t) => s -> t Identity a -> [a]
+ Control.Monad.TransLogicState.Class: observeAll :: TransLogicState s t => s -> t Identity a -> [a]
- Control.Monad.TransLogicState.Class: observeAllT :: (TransLogicState s t, (Monad m)) => s -> t m a -> m [a]
+ Control.Monad.TransLogicState.Class: observeAllT :: (TransLogicState s t, Monad m) => s -> t m a -> m [a]
- Control.Monad.TransLogicState.Class: observeMany :: (TransLogicState s t) => s -> Int -> t Identity a -> [a]
+ Control.Monad.TransLogicState.Class: observeMany :: TransLogicState s t => s -> Int -> t Identity a -> [a]
- Control.Monad.TransLogicState.Class: observeManyT :: forall m a. (TransLogicState s t, (Monad m)) => s -> Int -> t m a -> m [a]
+ Control.Monad.TransLogicState.Class: observeManyT :: forall m a. (TransLogicState s t, Monad m) => s -> Int -> t m a -> m [a]
- Control.Monad.TransLogicState.Class: observeStateAllT :: (TransLogicState s t, (Monad m)) => s -> t m a -> m ([a], s)
+ Control.Monad.TransLogicState.Class: observeStateAllT :: (TransLogicState s t, Monad m) => s -> t m a -> m ([a], s)
- Control.Monad.TransLogicState.Class: observeStateManyT :: forall m a. (TransLogicState s t, (Monad m)) => s -> Int -> t m a -> m ([a], s)
+ Control.Monad.TransLogicState.Class: observeStateManyT :: forall m a. (TransLogicState s t, Monad m) => s -> Int -> t m a -> m ([a], s)
- Control.Monad.TransLogicState.Class: observeT :: (TransLogicState s t, (Monad m)) => s -> t m a -> m a
+ Control.Monad.TransLogicState.Class: observeT :: (TransLogicState s t, MonadFail m) => s -> t m a -> m a
Files
- logict-state.cabal +2/−2
- src/Control/Monad/LogicState.hs +4/−0
- src/Control/Monad/LogicState/Logic.hs +1/−0
- src/Control/Monad/TransLogicState/Class.hs +5/−5
logict-state.cabal view
@@ -2,7 +2,7 @@ -- documentation, see http://haskell.org/cabal/users-guide/ name: logict-state-version: 0.1.0.5+version: 0.1.1.0 synopsis: Library for logic programming based on haskell package logict description: Logic programming built on top of part of logict library, in particular for dealing with backtrackable state homepage: https://github.com/atzedijkstra/logict-state@@ -29,6 +29,6 @@ build-depends: base >=4.8 && < 5, mtl >= 2.1, transformers >= 0.4.2,- logict >= 0.6.0.2+ logict >= 0.8.0.0 hs-source-dirs: src default-language: Haskell2010
src/Control/Monad/LogicState.hs view
@@ -83,6 +83,8 @@ instance Monad (LogicStateT gs bs m) where return a = LogicStateT ($ a) m >>= f = LogicStateT $ \sk -> unLogicStateT m (\a -> unLogicStateT (f a) sk)++instance MonadFail (LogicStateT gs bs m) where fail _ = LogicStateT $ flip const instance Alternative (LogicStateT gs bs f) where@@ -114,6 +116,8 @@ (return Nothing) instance TransLogicState (gs,bs) (LogicStateT gs bs) where+ -- observe s lt = runIdentity $ evalStateT (unLogicStateT lt (\a _ -> return a) (error "No answer.")) s+ observeT s lt = evalStateT (unLogicStateT lt (\a _ -> return a) (fail "No answer.")) s observeStateAllT s m = runStateT (unLogicStateT m
src/Control/Monad/LogicState/Logic.hs view
@@ -9,6 +9,7 @@ import Control.Monad.Logic hiding (observeT, observeAllT, observeManyT, observe, observeAll, observeMany) import qualified Control.Monad.Logic as CML+import Control.Monad.Trans.Class (lift) import Control.Monad.TransLogicState.Class
src/Control/Monad/TransLogicState/Class.hs view
@@ -13,14 +13,14 @@ import Control.Arrow import Control.Monad.Identity--- import Control.Monad.Trans+import Control.Monad.Trans -- | Additions to MonadTrans specifically useful for LogicState-class {- MonadTrans t => -} TransLogicState s t where+class MonadTrans t => TransLogicState s t where ------------------------------------------------------------------------- -- | Extracts the first result from a 't m' computation, -- failing otherwise.- observeT :: (Monad m) => s -> t m a -> m a+ observeT :: (MonadFail m) => s -> t m a -> m a observeT e m = fmap head $ observeManyT e 1 m -------------------------------------------------------------------------@@ -48,8 +48,8 @@ ------------------------------------------------------------------------- -- | Extracts the first result from a LogicVar computation.-observe :: (TransLogicState s t) => s -> t Identity a -> a-observe e = runIdentity . observeT e+observe :: (TransLogicState s t) => s -> t Maybe a -> Maybe a+observe e = observeT e ------------------------------------------------------------------------- -- | Extracts all results from a LogicVar computation.