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 +8/−0
- README.md +11/−1
- prompt.cabal +4/−3
- src/Control/Monad/Prompt.hs +14/−5
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