monad-st 0.1 → 0.2
raw patch · 2 files changed
+12/−8 lines, 2 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
- Control.Monad.ST.Class: instance (MonadTrans t, MonadST s m, Monad (t m)) => MonadST s (t m)
- Control.Monad.ST.Class: instance MonadST RealWorld IO
- Control.Monad.ST.Class: instance MonadST s (ST s)
+ Control.Monad.ST.Class: instance (MonadTrans t, MonadST m, Monad (t m)) => MonadST (t m)
+ Control.Monad.ST.Class: instance MonadST (ST s)
+ Control.Monad.ST.Class: instance MonadST IO
- Control.Monad.ST.Class: class Monad m => MonadST s m | m -> s
+ Control.Monad.ST.Class: class Monad m => MonadST m where { type family World m :: *; }
- Control.Monad.ST.Class: liftST :: MonadST s m => ST s a -> m a
+ Control.Monad.ST.Class: liftST :: MonadST m => ST (World m) a -> m a
Files
- Control/Monad/ST/Class.hs +11/−7
- monad-st.cabal +1/−1
Control/Monad/ST/Class.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE MultiParamTypeClasses, FunctionalDependencies, FlexibleInstances, UndecidableInstances #-}+{-# LANGUAGE TypeFamilies, FlexibleInstances, UndecidableInstances #-} ----------------------------------------------------------------------------- -- | -- Module : Control.Monad.ST.Class@@ -7,7 +7,7 @@ -- -- Maintainer : Edward Kmett <ekmett@gmail.com> -- Stability : experimental--- Portability : MPTCs, fundeps+-- Portability : type families -- ---------------------------------------------------------------------------- module Control.Monad.ST.Class (MonadST(..)) where@@ -15,14 +15,18 @@ import Control.Monad.Trans.Class import Control.Monad.ST -class Monad m => MonadST s m | m -> s where- liftST :: ST s a -> m a+class Monad m => MonadST m where+ type World m :: *+ liftST :: ST (World m) a -> m a -instance MonadST RealWorld IO where+instance MonadST IO where+ type World IO = RealWorld liftST = stToIO -instance MonadST s (ST s) where+instance MonadST (ST s) where+ type World (ST s) = s liftST = id -instance (MonadTrans t, MonadST s m, Monad (t m)) => MonadST s (t m) where+instance (MonadTrans t, MonadST m, Monad (t m)) => MonadST (t m) where+ type World (t m) = World m liftST = lift . liftST
monad-st.cabal view
@@ -1,6 +1,6 @@ name: monad-st category: Control, Monads-version: 0.1+version: 0.2 license: BSD3 cabal-version: >= 1.6 license-file: LICENSE