packages feed

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 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