GListInterface

kofre.decompose.interfaces.GListInterface$

A GList is a Delta CRDT modeling a grow-only list where list elements can neither be removed nor modified.

Concurrent inserts at the same index i are resolved by the timestamps of the insert operations: the later insert will be at index i while the earlier insert will be pushed to index i+1.

Note: GList is implemented as a linked list, thus the time needed to execute operations at the end of the list will scale linearly with the length of the list. Similarly, toList always has to iterate the whole list, so for applications that don't always need the whole list you should consider using toLazyList instead.

Attributes

Graph
Supertypes
class Object
trait Matchable
class Any
Self type

Members list

Concise view

Type members

Classlikes

case class GListElem[E](value: E) extends GListNode[E]

Attributes

Graph
Supertypes
trait Serializable
trait Product
trait Equals
trait GListNode[E]
class Object
trait Matchable
class Any
case class GListHead() extends GListNode[Nothing]

Attributes

Graph
Supertypes
trait Serializable
trait Product
trait Equals
trait GListNode[Nothing]
class Object
trait Matchable
class Any
sealed trait GListNode[+E]

Attributes

Graph
Supertypes
class Object
trait Matchable
class Any
Known subtypes
class GListElem[E]
class GListHead
implicit class GListSyntax[C, E](container: C)(using x$2: ArdtOpsContains[C, GList[E]]) extends OpsSyntaxHelper[C, GList[E]]

Attributes

Graph
Supertypes
trait OpsSyntaxHelper[C, GList[E]]
class Object
trait Matchable
class Any

Types

type GList[E] = Map[GListNode[TimedVal[E]], GListElem[TimedVal[E]]]

Value members

Concrete methods

def empty[E]: GList[E]

Givens

Implicits

Implicits

final implicit def GListSyntax[C, E](container: C)(using x$2: ArdtOpsContains[C, GList[E]]): GListSyntax[C, E]