crdt-10.4: Conflict-free replicated data types

Safe HaskellNone
LanguageHaskell2010

CRDT.LamportClock

Contents

Synopsis

Documentation

newtype Pid Source #

Unique process identifier

Constructors

Pid Word64 
Instances
Eq Pid Source # 
Instance details

Defined in CRDT.LamportClock

Methods

(==) :: Pid -> Pid -> Bool #

(/=) :: Pid -> Pid -> Bool #

Ord Pid Source # 
Instance details

Defined in CRDT.LamportClock

Methods

compare :: Pid -> Pid -> Ordering #

(<) :: Pid -> Pid -> Bool #

(<=) :: Pid -> Pid -> Bool #

(>) :: Pid -> Pid -> Bool #

(>=) :: Pid -> Pid -> Bool #

max :: Pid -> Pid -> Pid #

min :: Pid -> Pid -> Pid #

Show Pid Source # 
Instance details

Defined in CRDT.LamportClock

Methods

showsPrec :: Int -> Pid -> ShowS #

show :: Pid -> String #

showList :: [Pid] -> ShowS #

Lamport timestamp (for a single process)

class Process m => Clock m where Source #

Methods

getTimes Source #

Arguments

:: Natural

number of needed timestamps

-> m LamportTime

Starting value of the range. So return value t means range [t .. t + n - 1].

Get sequential timestamps.

Laws: 1. t1 <- getTimes n t2 <- getTime t2 >= t1 + n

  1. getTimes 0 == getTimes 1

advance :: LocalTime -> m () Source #

Instances
Clock LamportClock Source # 
Instance details

Defined in CRDT.LamportClock

Monad m => Clock (ProcessSimT m) Source # 
Instance details

Defined in CRDT.LamportClock.Simulation

Clock m => Clock (StateT s m) Source # 
Instance details

Defined in CRDT.LamportClock

Clock m => Clock (ReaderT r m) Source # 
Instance details

Defined in CRDT.LamportClock

type LocalTime = Natural Source #

Unix time in 10^{-7} seconds (100 ns), as in RFC 4122 and Swarm RON.

class Monad m => Process m where Source #

Methods

getPid :: m Pid Source #

Instances
Process LamportClock Source # 
Instance details

Defined in CRDT.LamportClock

Monad m => Process (ProcessSimT m) Source # 
Instance details

Defined in CRDT.LamportClock.Simulation

Process m => Process (StateT s m) Source # 
Instance details

Defined in CRDT.LamportClock

Methods

getPid :: StateT s m Pid Source #

Process m => Process (ReaderT r m) Source # 
Instance details

Defined in CRDT.LamportClock

Methods

getPid :: ReaderT r m Pid Source #

Real Lamport clock

data LamportClock a Source #

Instances
Monad LamportClock Source # 
Instance details

Defined in CRDT.LamportClock

Functor LamportClock Source # 
Instance details

Defined in CRDT.LamportClock

Methods

fmap :: (a -> b) -> LamportClock a -> LamportClock b #

(<$) :: a -> LamportClock b -> LamportClock a #

Applicative LamportClock Source # 
Instance details

Defined in CRDT.LamportClock

MonadIO LamportClock Source # 
Instance details

Defined in CRDT.LamportClock

Methods

liftIO :: IO a -> LamportClock a #

Clock LamportClock Source # 
Instance details

Defined in CRDT.LamportClock

Process LamportClock Source # 
Instance details

Defined in CRDT.LamportClock

Helpers