logict 0.7.0.2 → 0.7.0.3
raw patch · 4 files changed
+34/−20 lines, 4 filesdep ~base
Dependency ranges changed: base
Files
- Control/Monad/Logic.hs +21/−9
- Control/Monad/Logic/Class.hs +4/−8
- changelog.md +4/−0
- logict.cabal +5/−3
Control/Monad/Logic.hs view
@@ -3,17 +3,13 @@ -- Module : Control.Monad.Logic -- Copyright : (c) Dan Doel -- License : BSD3------ Maintainer : dan.doel@gmail.com--- Stability : experimental--- Portability : non-portable (multi-parameter type classes)+-- Maintainer : Andrew Lelechenko <andrew.lelechenko@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+-- /Backtracking, Interleaving, and Terminating Monad Transformers/,+-- by Oleg Kiselyov, Chung-chieh Shan, Daniel P. Friedman, Amr Sabry -- (<http://okmij.org/ftp/papers/LogicT.pdf>). ------------------------------------------------------------------------- @@ -58,8 +54,13 @@ import Control.Monad.Error.Class #if !MIN_VERSION_base(4,8,0)-import Data.Monoid (Monoid(mappend, mempty))+import Data.Monoid (Monoid (..)) #endif++#if MIN_VERSION_base(4,9,0)+import Data.Semigroup (Semigroup (..))+#endif+ import qualified Data.Foldable as F import qualified Data.Traversable as T @@ -101,7 +102,7 @@ -- | Runs a LogicT computation with the specified initial success and -- failure continuations. runLogicT :: LogicT m a -> (a -> m r -> m r) -> m r -> m r-runLogicT = unLogicT+runLogicT (LogicT r) = r ------------------------------------------------------------------------- -- | The basic Logic monad, for performing backtracking computations@@ -165,6 +166,17 @@ instance MonadPlus (LogicT m) where mzero = LogicT $ \_ fk -> fk m1 `mplus` m2 = LogicT $ \sk fk -> unLogicT m1 sk (unLogicT m2 sk fk)++#if MIN_VERSION_base(4,9,0)+instance Semigroup (LogicT m a) where+ (<>) = mplus+ sconcat = foldr1 mplus+#endif++instance Monoid (LogicT m a) where+ mempty = mzero+ mappend = mplus+ mconcat = foldr mplus mzero instance MonadTrans LogicT where lift m = LogicT $ \sk fk -> m >>= \a -> sk a fk
Control/Monad/Logic/Class.hs view
@@ -3,18 +3,14 @@ -- Module : Control.Monad.Logic.Class -- Copyright : (c) Dan Doel -- License : BSD3------ Maintainer : dan.doel@gmail.com--- Stability : experimental--- Portability : non-portable (multi-parameter type classes)+-- Maintainer : Andrew Lelechenko <andrew.lelechenko@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://okmij.org/ftp/papers/LogicT.pdf>)+-- /Backtracking, Interleaving, and Terminating Monad Transformers/,+-- by Oleg Kiselyov, Chung-chieh Shan, Daniel P. Friedman, Amr Sabry+-- (<http://okmij.org/ftp/papers/LogicT.pdf>). ------------------------------------------------------------------------- {-# LANGUAGE CPP #-}
changelog.md view
@@ -1,3 +1,7 @@+# 0.7.0.3++* Support GHC 9.0.+ # 0.7.0.2 * Add `Safe` pragmas.
logict.cabal view
@@ -1,5 +1,5 @@ name: logict-version: 0.7.0.2+version: 0.7.0.3 license: BSD3 license-file: LICENSE copyright:@@ -8,7 +8,6 @@ Copyright (c) 2014, Roman Cheplyaka maintainer: Andrew Lelechenko <andrew.lelechenko@gmail.com> author: Dan Doel-tested-with: ghc -any homepage: https://github.com/Bodigrim/logict#readme synopsis: A backtracking logic-programming monad. description:@@ -21,7 +20,8 @@ build-type: Simple extra-source-files: changelog.md-cabal-version: >=1.9.2+cabal-version: >=1.10+tested-with: GHC ==7.4.2 GHC ==7.6.3 GHC ==7.8.4 GHC ==7.10.3 GHC ==8.0.2 GHC ==8.2.2 GHC ==8.4.4 GHC ==8.6.5 GHC ==8.8.3 GHC ==8.10.1 source-repository head type: git@@ -31,6 +31,7 @@ exposed-modules: Control.Monad.Logic Control.Monad.Logic.Class+ default-language: Haskell2010 ghc-options: -O2 -Wall build-depends: base >=2 && <5,@@ -43,6 +44,7 @@ test-suite logict-tests type: exitcode-stdio-1.0 main-is: Test.hs+ default-language: Haskell2010 ghc-options: -Wall build-depends: base >=2 && <5,