STMonadTrans 0.3.3 → 0.3.4
raw patch · 4 files changed
+50/−2 lines, 4 filesdep +Cabaldep +STMonadTransdep ~basePVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependencies added: Cabal, STMonadTrans
Dependency ranges changed: base
API changes (from Hackage documentation)
- Control.Monad.ST.Trans: instance (Monad m, Functor m) => Applicative (STT s m)
- Control.Monad.ST.Trans: instance Eq (STArray s i e)
- Control.Monad.ST.Trans: instance Eq (STRef s a)
- Control.Monad.ST.Trans: instance Functor (STTRet s)
- Control.Monad.ST.Trans: instance Functor m => Functor (STT s m)
- Control.Monad.ST.Trans: instance Monad m => Monad (STT s m)
- Control.Monad.ST.Trans: instance MonadError e m => MonadError e (STT s m)
- Control.Monad.ST.Trans: instance MonadFix m => MonadFix (STT s m)
- Control.Monad.ST.Trans: instance MonadReader r m => MonadReader r (STT s m)
- Control.Monad.ST.Trans: instance MonadState s m => MonadState s (STT s' m)
- Control.Monad.ST.Trans: instance MonadTrans (STT s)
- Control.Monad.ST.Trans: instance MonadWriter w m => MonadWriter w (STT s m)
+ Control.Monad.ST.Trans: instance (GHC.Base.Monad m, GHC.Base.Functor m) => GHC.Base.Applicative (Control.Monad.ST.Trans.Internal.STT s m)
+ Control.Monad.ST.Trans: instance Control.Monad.Error.Class.MonadError e m => Control.Monad.Error.Class.MonadError e (Control.Monad.ST.Trans.Internal.STT s m)
+ Control.Monad.ST.Trans: instance Control.Monad.Fix.MonadFix m => Control.Monad.Fix.MonadFix (Control.Monad.ST.Trans.Internal.STT s m)
+ Control.Monad.ST.Trans: instance Control.Monad.Reader.Class.MonadReader r m => Control.Monad.Reader.Class.MonadReader r (Control.Monad.ST.Trans.Internal.STT s m)
+ Control.Monad.ST.Trans: instance Control.Monad.State.Class.MonadState s m => Control.Monad.State.Class.MonadState s (Control.Monad.ST.Trans.Internal.STT s' m)
+ Control.Monad.ST.Trans: instance Control.Monad.Trans.Class.MonadTrans (Control.Monad.ST.Trans.Internal.STT s)
+ Control.Monad.ST.Trans: instance Control.Monad.Writer.Class.MonadWriter w m => Control.Monad.Writer.Class.MonadWriter w (Control.Monad.ST.Trans.Internal.STT s m)
+ Control.Monad.ST.Trans: instance GHC.Base.Functor (Control.Monad.ST.Trans.Internal.STTRet s)
+ Control.Monad.ST.Trans: instance GHC.Base.Functor m => GHC.Base.Functor (Control.Monad.ST.Trans.Internal.STT s m)
+ Control.Monad.ST.Trans: instance GHC.Base.Monad m => GHC.Base.Monad (Control.Monad.ST.Trans.Internal.STT s m)
+ Control.Monad.ST.Trans: instance GHC.Classes.Eq (Control.Monad.ST.Trans.STArray s i e)
+ Control.Monad.ST.Trans: instance GHC.Classes.Eq (Control.Monad.ST.Trans.STRef s a)
- Control.Monad.ST.Trans: unsafeIOToSTT :: Monad m => IO a -> STT s m a
+ Control.Monad.ST.Trans: unsafeIOToSTT :: (Monad m) => IO a -> STT s m a
Files
- Control/Monad/ST/Trans.hs +1/−0
- STMonadTrans.cabal +7/−2
- dist/build/fooStub/fooStub-tmp/fooStub.hs +5/−0
- test/Test.hs +37/−0
Control/Monad/ST/Trans.hs view
@@ -130,6 +130,7 @@ instance Eq (STRef s a) where STRef v1 == STRef v2 = isTrue# (sameMutVar# v1 v2) +{-# NOINLINE runST #-} -- | Executes a computation in the 'STT' monad transformer runST :: Monad m => (forall s. STT s m a) -> m a runST m = let (STT f) = m
STMonadTrans.cabal view
@@ -1,6 +1,6 @@ name: STMonadTrans-version: 0.3.3-cabal-version: >= 1.6+version: 0.3.4+cabal-version: >= 1.8 license: BSD3 license-file: LICENSE author: Josef Svenningsson@@ -37,3 +37,8 @@ extensions: CPP, MagicHash, UnboxedTuples, Rank2Types, FlexibleInstances, MultiParamTypeClasses, UndecidableInstances +Test-Suite foo+ type: detailed-0.9+ hs-source-dirs: test+ test-module: Test+ build-depends: STMonadTrans, base, mtl, array, Cabal
+ dist/build/fooStub/fooStub-tmp/fooStub.hs view
@@ -0,0 +1,5 @@+module Main ( main ) where+import Distribution.Simple.Test.LibV09 ( stubMain )+import Test ( tests )+main :: IO ()+main = stubMain tests
+ test/Test.hs view
@@ -0,0 +1,37 @@+module Test where++import Control.Monad+import Control.Monad.Trans+import Control.Monad.ST.Trans++import Data.Array++import Distribution.TestSuite++foo :: Int -> Maybe (Array Int Int)+foo i = runSTArray $ do+ arr <- newSTArray (1, 3) 0+ lift $ guard $ i > 0+ writeSTArray arr 2 i+ return arr++ups :: (Maybe (Array Int Int, Array Int Int))+ups = (,) <$> foo 5 <*> foo 6++main :: IO ()+main = print ups++tests :: IO [Test]+tests = return [Test bar]+ where+ bar = TestInstance+ { run = return $ Finished runUps+ , name = "array creation"+ , tags = []+ , options = []+ , setOption = \_ _ -> Right bar+ }+ runUps = case ups of+ Just (a1,a2) | elems a1 /= elems a2 -> Pass+ | otherwise -> Fail "Only created one array."+ _ -> Error "Got Nothing! Shouldn't happen."