| Portability | unknown |
|---|---|
| Stability | unknown |
| Maintainer | Patrick Bahr |
Data.Equivalence.Monad
Description
This is an alternative interface to the union-find implementation
in ''Data.Equivalence.STT''. It is wrapped into the monad
transformer EquivT.
- class (Monad m, Ord v) => MonadEquiv c v m | m -> v, m -> c where
- equivalent :: v -> v -> m Bool
- classDesc :: v -> m c
- equate :: v -> v -> m ()
- newtype EquivT s c v m a = EquivT {}
- type EquivM s c v = EquivT s c v Identity
- runEquivT :: Monad m => (v -> c) -> (c -> c -> c) -> (forall s. EquivT s c v m a) -> m a
- runEquivM :: (v -> c) -> (c -> c -> c) -> (forall s. EquivM s c v a) -> a
Documentation
class (Monad m, Ord v) => MonadEquiv c v m | m -> v, m -> c whereSource
This class specifies the interface for a monadic computation that maintains an equivalence relation.
Methods
equivalent :: v -> v -> m BoolSource
This function decides whether the two given elements are equivalent in the current equivalence relation
This function obtains the descriptor of the given element's equivalence class.
equate :: v -> v -> m ()Source
This function equates the given two elements. That is it unions the equivalence classes of the two elements.
Instances
| MonadEquiv c v m => MonadEquiv c v (ReaderT r m) | |
| MonadEquiv c v m => MonadEquiv c v (StateT s m) | |
| (MonadEquiv c v m, Error e) => MonadEquiv c v (ErrorT e m) | |
| (MonadEquiv c v m, Monoid w) => MonadEquiv c v (WriterT w m) | |
| (Monad m, Ord v) => MonadEquiv c v (EquivT s c v m) |
newtype EquivT s c v m a Source
This monad transformer encapsulates computations maintaining an
equivalence relation. A monadic computation of type EquivT s c v m
a maintains a state space indexed by type s, maintains an
equivalence relation over elements of type v with equivalence class
descriptors of type c and contains an internal monadic computation
of type m a.
Instances
| (Monad m, Ord v) => MonadEquiv c v (EquivT s c v m) | |
| MonadReader r m => MonadReader r (EquivT s c v m) | |
| MonadState st m => MonadState st (EquivT s c v m) | |
| MonadError e m => MonadError e (EquivT s c v m) | |
| (Monoid w, MonadWriter w m) => MonadWriter w (EquivT s c v m) | |
| MonadTrans (EquivT s c v) | |
| Monad m => Monad (EquivT s c v m) |
type EquivM s c v = EquivT s c v IdentitySource
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
over elements of type v with equivalence class descriptors of type
c and returns a value of type a.
Arguments
| :: Monad m | |
| => (v -> c) | used to construct an equivalence class descriptor for a singleton class |
| -> (c -> c -> c) | used to combine the equivalence class descriptor of two classes which are meant to be combined. |
| -> (forall s. EquivT s c v m a) | |
| -> m a |
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 combine two equivalence class descriptors.
Arguments
| :: (v -> c) | used to construct an equivalence class descriptor for a singleton class |
| -> (c -> c -> c) | used to combine the equivalence class descriptor of two classes which are meant to be combined. |
| -> (forall s. EquivM s c v a) | |
| -> a |
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 combine two equivalence class descriptors.