Portability | unknown |
---|---|
Stability | unknown |
Maintainer | Patrick Bahr |
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.
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.
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
.
(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
.
:: 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.
:: (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.