packages feed

equivalence 0.2.1 → 0.2.2

raw patch · 2 files changed

+31/−2 lines, 2 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- Data.Equivalence.Monad: instance (Monad m) => Monad (EquivT s c v m)
- Data.Equivalence.Monad: instance (MonadEquiv c v d m) => MonadEquiv c v d (ReaderT r m)
- Data.Equivalence.Monad: instance (MonadEquiv c v d m) => MonadEquiv c v d (StateT s m)
- Data.Equivalence.Monad: instance (MonadError e m) => MonadError e (EquivT s c v m)
- Data.Equivalence.Monad: instance (MonadReader r m) => MonadReader r (EquivT s c v m)
- Data.Equivalence.Monad: instance (MonadState st m) => MonadState st (EquivT s c v m)
+ Data.Equivalence.Monad: instance Monad m => Monad (EquivT s c v m)
+ Data.Equivalence.Monad: instance MonadEquiv c v d m => MonadEquiv c v d (ReaderT r m)
+ Data.Equivalence.Monad: instance MonadEquiv c v d m => MonadEquiv c v d (StateT s m)
+ Data.Equivalence.Monad: instance MonadError e m => MonadError e (EquivT s c v m)
+ Data.Equivalence.Monad: instance MonadReader r m => MonadReader r (EquivT s c v m)
+ Data.Equivalence.Monad: instance MonadState st m => MonadState st (EquivT s c v m)
+ Data.Equivalence.Monad: runEquivM' :: (forall s. EquivM' s v a) -> a
+ Data.Equivalence.Monad: runEquivT' :: Monad m => (forall s. EquivT' s v m a) -> m a
+ Data.Equivalence.Monad: type EquivM' s v = EquivM s () v
+ Data.Equivalence.Monad: type EquivT' s = EquivT s ()
- Data.Equivalence.Monad: (===) :: (MonadEquiv c v d m) => c -> c -> m Bool
+ Data.Equivalence.Monad: (===) :: MonadEquiv c v d m => c -> c -> m Bool
- Data.Equivalence.Monad: class (Monad m, Ord v) => MonadEquiv c v d m | m -> v, m -> c, m -> d
+ Data.Equivalence.Monad: class (Monad m, Ord v) => MonadEquiv c v d m | m -> v, m -> c, m -> d where equate x y = equateAll [x, y] combine x y = combineAll [x, y] >> return x
- Data.Equivalence.Monad: classDesc :: (MonadEquiv c v d m) => v -> m d
+ Data.Equivalence.Monad: classDesc :: MonadEquiv c v d m => v -> m d
- Data.Equivalence.Monad: combine :: (MonadEquiv c v d m) => c -> c -> m c
+ Data.Equivalence.Monad: combine :: MonadEquiv c v d m => c -> c -> m c
- Data.Equivalence.Monad: combineAll :: (MonadEquiv c v d m) => [c] -> m ()
+ Data.Equivalence.Monad: combineAll :: MonadEquiv c v d m => [c] -> m ()
- Data.Equivalence.Monad: desc :: (MonadEquiv c v d m) => c -> m d
+ Data.Equivalence.Monad: desc :: MonadEquiv c v d m => c -> m d
- Data.Equivalence.Monad: equate :: (MonadEquiv c v d m) => v -> v -> m ()
+ Data.Equivalence.Monad: equate :: MonadEquiv c v d m => v -> v -> m ()
- Data.Equivalence.Monad: equateAll :: (MonadEquiv c v d m) => [v] -> m ()
+ Data.Equivalence.Monad: equateAll :: MonadEquiv c v d m => [v] -> m ()
- Data.Equivalence.Monad: equivalent :: (MonadEquiv c v d m) => v -> v -> m Bool
+ Data.Equivalence.Monad: equivalent :: MonadEquiv c v d m => v -> v -> m Bool
- Data.Equivalence.Monad: getClass :: (MonadEquiv c v d m) => v -> m c
+ Data.Equivalence.Monad: getClass :: MonadEquiv c v d m => v -> m c
- Data.Equivalence.Monad: remove :: (MonadEquiv c v d m) => c -> m Bool
+ Data.Equivalence.Monad: remove :: MonadEquiv c v d m => c -> m Bool
- Data.Equivalence.Monad: removeClass :: (MonadEquiv c v d m) => v -> m Bool
+ Data.Equivalence.Monad: removeClass :: MonadEquiv c v d m => v -> m Bool
- Data.Equivalence.Monad: runEquivT :: (Monad m) => (v -> c) -> (c -> c -> c) -> (forall s. EquivT s c v m a) -> m a
+ Data.Equivalence.Monad: runEquivT :: Monad m => (v -> c) -> (c -> c -> c) -> (forall s. EquivT s c v m a) -> m a
- Data.Equivalence.STT: leastEquiv :: (Monad m) => (a -> c) -> (c -> c -> c) -> STT s m (Equiv s c a)
+ Data.Equivalence.STT: leastEquiv :: Monad m => (a -> c) -> (c -> c -> c) -> STT s m (Equiv s c a)

Files

equivalence.cabal view
@@ -1,5 +1,5 @@ Name:            equivalence-Version:         0.2.1+Version:         0.2.2 License:         BSD3 License-File:    LICENSE Author:          Patrick Bahr <paba@diku.dk>
src/Data/Equivalence/Monad.hs view
@@ -26,9 +26,13 @@     (      MonadEquiv(..),      EquivT(..),+     EquivT',      EquivM,+     EquivM',      runEquivT,-     runEquivM+     runEquivT',+     runEquivM,+     runEquivM'      ) where  import Data.Equivalence.STT hiding (equate, equateAll, equivalent, classDesc, removeClass,@@ -54,6 +58,12 @@  newtype EquivT s c v m a = EquivT {unEquivT :: ReaderT (Equiv s c v) (STT s m) a} ++{-| This monad transformer is a special case of 'EquivT' that only+maintains trivial equivalence class descriptors of type @()@. -}++type EquivT' s = EquivT s ()+ {-| This monad encapsulates computations maintaining an equivalence relation. A monadic computation of type 'EquivM' @s c v a@ maintains a state space indexed by type @s@, maintains an equivalence relation@@ -62,6 +72,12 @@  type EquivM s c v = EquivT s c v Identity ++{-| This monad is a special case of 'EquivM' that only maintains+trivial equivalence class descriptors of type @()@. -}++type EquivM' s v = EquivM s () v+ instance (Monad m) => Monad (EquivT s c v m) where     EquivT m >>= f = EquivT (m >>= (unEquivT . f))     return = EquivT . return@@ -101,6 +117,13 @@   p <- leastEquiv mk com   (`runReaderT` p) $ unEquivT m ++{-| This function is a special case of 'runEquivT' that only maintains+trivial equivalence class descriptors of type @()@. -}++runEquivT' :: (Monad m) => (forall s. EquivT' s v m a) -> m a+runEquivT' = runEquivT (const ()) (\_ _-> ())+ {-| This function runs a monadic computation that maintains an equivalence relation. The first tow arguments specify how to construct an equivalence class descriptor for a singleton class and how to@@ -111,6 +134,12 @@           -> (forall s. EquivM s c v a)           -> a runEquivM sing comb m = runIdentity $ runEquivT sing comb m++{-| This function is a special case of 'runEquivM' that only maintains+trivial equivalence class descriptors of type @()@. -}++runEquivM' :: (forall s. EquivM' s v a) -> a+runEquivM' = runEquivM (const ()) (\_ _ -> ())  {-| This class specifies the interface for a monadic computation that maintains an equivalence relation.  -}