packages feed

prompt 0.1.0.0 → 0.1.1.0

raw patch · 4 files changed

+37/−9 lines, 4 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- Control.Monad.Prompt: instance (Control.Monad.Error.Class.MonadError e t, Data.Traversable.Traversable t) => Control.Monad.Error.Class.MonadError e (Control.Monad.Prompt.PromptT a b t)
- Control.Monad.Prompt: instance (Control.Monad.Reader.Class.MonadReader r t, Data.Traversable.Traversable t) => Control.Monad.Reader.Class.MonadReader r (Control.Monad.Prompt.PromptT a b t)
- Control.Monad.Prompt: instance (Control.Monad.State.Class.MonadState s t, Data.Traversable.Traversable t) => Control.Monad.State.Class.MonadState s (Control.Monad.Prompt.PromptT a b t)
- Control.Monad.Prompt: instance (Control.Monad.Writer.Class.MonadWriter w t, Data.Traversable.Traversable t) => Control.Monad.Writer.Class.MonadWriter w (Control.Monad.Prompt.PromptT a b t)
- Control.Monad.Prompt: instance (GHC.Base.Monad t, Data.Traversable.Traversable t) => GHC.Base.Monad (Control.Monad.Prompt.PromptT a b t)
- Control.Monad.Prompt: instance (GHC.Base.MonadPlus t, Data.Traversable.Traversable t) => GHC.Base.MonadPlus (Control.Monad.Prompt.PromptT a b t)
- Control.Monad.Prompt: instance Control.Monad.Trans.Class.MonadTrans (Control.Monad.Prompt.PromptT a b)
- Control.Monad.Prompt: instance GHC.Base.Alternative t => GHC.Base.Alternative (Control.Monad.Prompt.PromptT a b t)
- Control.Monad.Prompt: instance GHC.Base.Applicative t => Control.Monad.Prompt.Class.MonadPrompt a b (Control.Monad.Prompt.PromptT a b t)
- Control.Monad.Prompt: instance GHC.Base.Applicative t => GHC.Base.Applicative (Control.Monad.Prompt.PromptT a b t)
- Control.Monad.Prompt: instance GHC.Base.Functor t => GHC.Base.Functor (Control.Monad.Prompt.PromptT a b t)
- Control.Monad.Prompt.Class: instance (GHC.Base.Monad m, Control.Monad.Prompt.Class.MonadPrompt a b m) => Control.Monad.Prompt.Class.MonadPrompt a b (Control.Monad.Trans.Except.ExceptT e m)
- Control.Monad.Prompt.Class: instance (GHC.Base.Monad m, Control.Monad.Prompt.Class.MonadPrompt a b m) => Control.Monad.Prompt.Class.MonadPrompt a b (Control.Monad.Trans.Maybe.MaybeT m)
- Control.Monad.Prompt.Class: instance (GHC.Base.Monad m, Control.Monad.Prompt.Class.MonadPrompt a b m) => Control.Monad.Prompt.Class.MonadPrompt a b (Control.Monad.Trans.Reader.ReaderT r m)
- Control.Monad.Prompt.Class: instance (GHC.Base.Monad m, Control.Monad.Prompt.Class.MonadPrompt a b m) => Control.Monad.Prompt.Class.MonadPrompt a b (Control.Monad.Trans.State.Lazy.StateT s m)
- Control.Monad.Prompt.Class: instance (GHC.Base.Monad m, Control.Monad.Prompt.Class.MonadPrompt a b m) => Control.Monad.Prompt.Class.MonadPrompt a b (Control.Monad.Trans.State.Strict.StateT s m)
- Control.Monad.Prompt.Class: instance (GHC.Base.Monad m, Control.Monad.Prompt.Class.MonadPrompt a b m, Control.Monad.Trans.Error.Error e) => Control.Monad.Prompt.Class.MonadPrompt a b (Control.Monad.Trans.Error.ErrorT e m)
- Control.Monad.Prompt.Class: instance (GHC.Base.Monad m, Control.Monad.Prompt.Class.MonadPrompt a b m, GHC.Base.Monoid w) => Control.Monad.Prompt.Class.MonadPrompt a b (Control.Monad.Trans.RWS.Lazy.RWST r w s m)
- Control.Monad.Prompt.Class: instance (GHC.Base.Monad m, Control.Monad.Prompt.Class.MonadPrompt a b m, GHC.Base.Monoid w) => Control.Monad.Prompt.Class.MonadPrompt a b (Control.Monad.Trans.RWS.Strict.RWST r w s m)
- Control.Monad.Prompt.Class: instance (GHC.Base.Monad m, Control.Monad.Prompt.Class.MonadPrompt a b m, GHC.Base.Monoid w) => Control.Monad.Prompt.Class.MonadPrompt a b (Control.Monad.Trans.Writer.Lazy.WriterT w m)
- Control.Monad.Prompt.Class: instance (GHC.Base.Monad m, Control.Monad.Prompt.Class.MonadPrompt a b m, GHC.Base.Monoid w) => Control.Monad.Prompt.Class.MonadPrompt a b (Control.Monad.Trans.Writer.Strict.WriterT w m)
+ Control.Monad.Prompt: instance (Alternative t, Traversable t) => Alternative (PromptT a b t)
+ Control.Monad.Prompt: instance (Monad t, Traversable t) => Monad (PromptT a b t)
+ Control.Monad.Prompt: instance (MonadError e t, Traversable t) => MonadError e (PromptT a b t)
+ Control.Monad.Prompt: instance (MonadPlus t, Traversable t) => MonadPlus (PromptT a b t)
+ Control.Monad.Prompt: instance (MonadReader r t, Traversable t) => MonadReader r (PromptT a b t)
+ Control.Monad.Prompt: instance (MonadState s t, Traversable t) => MonadState s (PromptT a b t)
+ Control.Monad.Prompt: instance (MonadWriter w t, Traversable t) => MonadWriter w (PromptT a b t)
+ Control.Monad.Prompt: instance Applicative t => Applicative (PromptT a b t)
+ Control.Monad.Prompt: instance Applicative t => MonadPrompt a b (PromptT a b t)
+ Control.Monad.Prompt: instance Functor t => Functor (PromptT a b t)
+ Control.Monad.Prompt: instance MonadTrans (PromptT a b)
+ Control.Monad.Prompt.Class: instance (Monad m, MonadPrompt a b m) => MonadPrompt a b (ExceptT e m)
+ Control.Monad.Prompt.Class: instance (Monad m, MonadPrompt a b m) => MonadPrompt a b (MaybeT m)
+ Control.Monad.Prompt.Class: instance (Monad m, MonadPrompt a b m) => MonadPrompt a b (ReaderT r m)
+ Control.Monad.Prompt.Class: instance (Monad m, MonadPrompt a b m) => MonadPrompt a b (StateT s m)
+ Control.Monad.Prompt.Class: instance (Monad m, MonadPrompt a b m, Error e) => MonadPrompt a b (ErrorT e m)
+ Control.Monad.Prompt.Class: instance (Monad m, MonadPrompt a b m, Monoid w) => MonadPrompt a b (RWST r w s m)
+ Control.Monad.Prompt.Class: instance (Monad m, MonadPrompt a b m, Monoid w) => MonadPrompt a b (WriterT w m)

Files

CHANGELOG.md view
@@ -1,3 +1,11 @@+0.1.1.0+-------+<https://github.com/mstksg/prompt/releases/tag/v0.1.1.0>++*   Fixed `Alternative` and `MonadPlus` instances to behave meaningfully ---+    that is, with "short circuiting" behavior for `t`'s that offer it.++ 0.1.0.0 ------- <https://github.com/mstksg/prompt/releases/tag/v0.1.0.0>
README.md view
@@ -1,7 +1,17 @@ prompt ====== -Monad (and transformer) for delayed-effect "pure" prompt-and-respose queries.+Lightweight library providing a monad/applicative (and transformer) for+delayed-effect "pure" prompt-and-respose queries.++~~~bash+$ cabal update+$ cabal install prompt+~~~++Now on [hackage][]!++[hackage]: http://hackage.haskell.org/package/prompt  Prompt ------
prompt.cabal view
@@ -2,7 +2,7 @@ --  see http://haskell.org/cabal/users-guide/  name:                prompt-version:             0.1.0.0+version:             0.1.1.0 synopsis:            Monad (and transformer) for deferred-effect pure                      prompt-response queries description:         Monad (and transformer) for delayed-effect "pure"@@ -22,8 +22,9 @@                      and more meaningful type.                      .                      For more information and instructions on usage with-                     examples, see <https://github.com/mstksg/prompt the-                     README>.+                     examples, see <https://github.com/mstksg/prompt the README>.+                     .+                     Not quite related to the /MonadPrompt/ library. homepage:            https://github.com/mstksg/prompt bug-reports:         https://github.com/mstksg/prompt/issues license:             MIT
src/Control/Monad/Prompt.hs view
@@ -61,13 +61,14 @@   ) where  import Control.Applicative-import Control.Monad hiding (sequence, mapM)+import Control.Monad hiding       (sequence, mapM, msum) import Control.Monad.Error.Class import Control.Monad.Prompt.Class import Control.Monad.Reader.Class import Control.Monad.State.Class import Control.Monad.Trans import Control.Monad.Writer.Class+import Data.Foldable import Data.Functor.Identity  #if !MIN_VERSION_base(4,8,0)@@ -134,12 +135,17 @@     PromptT f <*> PromptT x = PromptT $ \g -> liftM2 (<*>) (f g) (x g) #endif -instance Alternative t => Alternative (PromptT a b t) where+instance (Alternative t, Traversable t) => Alternative (PromptT a b t) where     empty = PromptT $ const (return empty)+    PromptT x <|> PromptT y = PromptT $ \g -> do+        x' <- x g+        let c = (return . pure <$> x') <|> pure (y g) #if MIN_VERSION_base(4,8,0)-    PromptT x <|> PromptT y = PromptT $ \g -> liftA2 (<|>) (x g) (y g)+        -- TODO: Is this okay?????+        -- join <$> sequence c+        asum <$> sequence c #else-    PromptT x <|> PromptT y = PromptT $ \g -> liftM2 (<|>) (x g) (y g)+        asum `liftM` sequence c #endif  instance (Monad t, Traversable t) => Monad (PromptT a b t) where@@ -159,7 +165,10 @@     mplus = (<|>) #else     mzero = PromptT $ const (return mzero)-    mplus (PromptT x) (PromptT y) = PromptT $ \g -> liftM2 mplus (x g) (y g)+    PromptT x `mplus` PromptT y = PromptT $ \g -> do+        x' <- x g+        let c = (return . return <$> x') `mplus` return (y g)+        msum `liftM` sequence c #endif  instance MonadTrans (PromptT a b) where