crdt-event-fold-1.2.1.1: Garbage collected event folding CRDT.
Safe HaskellNone
LanguageHaskell2010

Data.CRDT.EventFold.Monad

Description

 
Synopsis

Documentation

class MonadEventFold o p e m | m -> o p e where Source #

The interface for monadically updating an EventFold, where the monadic context is intended to manage:

  • The local participant.
  • The current state of the EventFold.
  • The accumulated consistent outputs.
  • Whether the EventFold needs to be propagated to other participants.

Methods

event :: e -> m (Output e, EventId p) Source #

Apply an event. See event.

fullMerge :: EventFold o p e -> m (Either (MergeError o p e) ()) Source #

Perform a full merge. See fullMerge.

diffMerge :: Diff o p e -> m (Either (MergeError o p e) ()) Source #

Perform a diff merge. See diffMerge.

participate :: p -> m (EventId p) Source #

Allow a new participant to join in the cluster. See participate.

disassociate :: p -> m (EventId p) Source #

Remove a peer from participation. See disassociate.

Instances

Instances details
(Eq (Output e), Eq e, Eq o, Event e, Monad m, Ord p) => MonadEventFold o p e (EventFoldT o p e m) Source # 
Instance details

Defined in Data.CRDT.EventFold.Monad

Methods

event :: e -> EventFoldT o p e m (Output e, EventId p) Source #

fullMerge :: EventFold o p e -> EventFoldT o p e m (Either (MergeError o p e) ()) Source #

diffMerge :: Diff o p e -> EventFoldT o p e m (Either (MergeError o p e) ()) Source #

participate :: p -> EventFoldT o p e m (EventId p) Source #

disassociate :: p -> EventFoldT o p e m (EventId p) Source #

data EventFoldT o p e m a Source #

A transformer providing MonadEventFold.

Instances

Instances details
(Eq (Output e), Eq e, Eq o, Event e, Monad m, Ord p) => MonadEventFold o p e (EventFoldT o p e m) Source # 
Instance details

Defined in Data.CRDT.EventFold.Monad

Methods

event :: e -> EventFoldT o p e m (Output e, EventId p) Source #

fullMerge :: EventFold o p e -> EventFoldT o p e m (Either (MergeError o p e) ()) Source #

diffMerge :: Diff o p e -> EventFoldT o p e m (Either (MergeError o p e) ()) Source #

participate :: p -> EventFoldT o p e m (EventId p) Source #

disassociate :: p -> EventFoldT o p e m (EventId p) Source #

MonadTrans (EventFoldT o p e) Source # 
Instance details

Defined in Data.CRDT.EventFold.Monad

Methods

lift :: Monad m => m a -> EventFoldT o p e m a #

Monad m => Monad (EventFoldT o p e m) Source # 
Instance details

Defined in Data.CRDT.EventFold.Monad

Methods

(>>=) :: EventFoldT o p e m a -> (a -> EventFoldT o p e m b) -> EventFoldT o p e m b #

(>>) :: EventFoldT o p e m a -> EventFoldT o p e m b -> EventFoldT o p e m b #

return :: a -> EventFoldT o p e m a #

Functor m => Functor (EventFoldT o p e m) Source # 
Instance details

Defined in Data.CRDT.EventFold.Monad

Methods

fmap :: (a -> b) -> EventFoldT o p e m a -> EventFoldT o p e m b #

(<$) :: a -> EventFoldT o p e m b -> EventFoldT o p e m a #

Monad m => Applicative (EventFoldT o p e m) Source # 
Instance details

Defined in Data.CRDT.EventFold.Monad

Methods

pure :: a -> EventFoldT o p e m a #

(<*>) :: EventFoldT o p e m (a -> b) -> EventFoldT o p e m a -> EventFoldT o p e m b #

liftA2 :: (a -> b -> c) -> EventFoldT o p e m a -> EventFoldT o p e m b -> EventFoldT o p e m c #

(*>) :: EventFoldT o p e m a -> EventFoldT o p e m b -> EventFoldT o p e m b #

(<*) :: EventFoldT o p e m a -> EventFoldT o p e m b -> EventFoldT o p e m a #

runEventFoldT Source #

Arguments

:: Ord p 
=> p

The local participant.

-> EventFold o p e

Initial event fold value.

-> EventFoldT o p e m a

The action to run.

-> m (a, UpdateResult o p e)

Returns the result of the action, plus all the accumulated UpdateResults, which contain the new EventFold value, all of the consistent outputs, and a flag indicating whether the new EventFold value should be propagated to the other participants.