class (Monad m, Applicative m, Ord v) => MonadEquiv c v d (m :: Type -> Type) | m -> v, m -> c, m -> d whereThis class specifies the interface for a monadic computation that maintains an equivalence relation.
Methods
equivalent :: v -> v -> m BoolThis function decides whether the two given elements are equivalent in the current equivalence relation.
classDesc :: v -> m dThis function obtains the descriptor of the given element's equivalence class.
equateAll :: [v] -> m ()This function equates the element in the given list. That is, it unions the equivalence classes of the elements and combines their descriptor.
equate :: v -> v -> m ()This function equates the given two elements. That is it unions the equivalence classes of the two elements.
removeClass :: v -> m BoolThis function removes the equivalence class of the given element. If there is no corresponding equivalence class,
Falseis returned; otherwiseTrue.getClass :: v -> m cThis function provides the equivalence class of the given element.
combineAll :: [c] -> m ()This function combines all equivalence classes in the given list. Afterwards all elements in the argument list represent the same equivalence class!
combine :: c -> c -> m cThis function combines the two given equivalence classes. Afterwards both arguments represent the same equivalence class! One of it is returned in order to represent the new combined equivalence class.
(===) :: c -> c -> m BoolThis function decides whether the two given equivalence classes are the same.
desc :: c -> m dThis function returns the descriptor of the given equivalence class.
remove :: c -> m BoolThis function removes the given equivalence class. If the equivalence class does not exist anymore,
Falseis returned; otherwiseTrue.values :: m [v]This function returns all values represented by some equivalence class.
classes :: m [c]This function returns the list of all equivalence classes.
Instances5MonadEquiv
MonadEquiv c v d m => MonadEquiv c v d (ExceptT e m)Defined in equivalence-0.4.1 · Data.Equivalence.MonadMonadEquiv c v d m => MonadEquiv c v d (ReaderT r m)Defined in equivalence-0.4.1 · Data.Equivalence.MonadMonadEquiv c v d m => MonadEquiv c v d (StateT s m)Defined in equivalence-0.4.1 · Data.Equivalence.Monad(MonadEquiv c v d m, Monoid w) => MonadEquiv c v d (WriterT w m)Defined in equivalence-0.4.1 · Data.Equivalence.Monad(Monad m, Applicative m, Ord v) => MonadEquiv (Class s d v) v d (EquivT s d v m)Defined in equivalence-0.4.1 · Data.Equivalence.Monad