A ZRef[EA, EB, A, B] is a polymorphic, purely functional description of a
mutable reference. The fundamental operations of a ZRef are set and
get. set takes a value of type A and sets the reference to a new value,
potentially failing with an error of type EA. get gets the current value
of the reference and returns a value of type B, potentially failing with an
error of type EB.
When the error and value types of the ZRef are unified, that is, it is a
ZRef[E, E, A, A], the ZRef also supports atomic modify and update
operations. All operations are guaranteed to be safe for concurrent access.
NOTE: While ZRef provides the functional equivalent of a mutable reference,
the value inside the ZRef should be immutable. For performance reasons
ZRef is implemented in terms of compare and swap operations rather than
synchronization. These operations are not safe for mutable values that do not
support concurrent access.
- Companion:
- object
Value members
Abstract methods
Folds over the error and value types of the ZRef. This is a highly
polymorphic method that is capable of arbitrarily transforming the error
and value types of the ZRef. For most use cases one of the more specific
combinators implemented in terms of fold will be more ergonomic but this
method is extremely useful for implementing new combinators.
Folds over the error and value types of the ZRef. This is a highly
polymorphic method that is capable of arbitrarily transforming the error
and value types of the ZRef. For most use cases one of the more specific
combinators implemented in terms of fold will be more ergonomic but this
method is extremely useful for implementing new combinators.
Folds over the error and value types of the ZRef, allowing access to the
state in transforming the set value. This is a more powerful version of
fold but requires unifying the error types.
Folds over the error and value types of the ZRef, allowing access to the
state in transforming the set value. This is a more powerful version of
fold but requires unifying the error types.
Concrete methods
Maps and filters the get value of the ZRef with the specified partial
function, returning a ZRef with a get value that succeeds with the
result of the partial function if it is defined or else fails with None.
Maps and filters the get value of the ZRef with the specified partial
function, returning a ZRef with a get value that succeeds with the
result of the partial function if it is defined or else fails with None.
Transforms the set value of the ZRef with the specified function.
Transforms the set value of the ZRef with the specified function.
Transforms the set value of the ZRef with the specified fallible
function.
Transforms the set value of the ZRef with the specified fallible
function.
Transforms both the set and get values of the ZRef with the specified
functions.
Transforms both the set and get values of the ZRef with the specified
functions.
Transforms both the set and get values of the ZRef with the specified
fallible functions.
Transforms both the set and get values of the ZRef with the specified
fallible functions.
Transforms both the set and get errors of the ZRef with the specified
functions.
Transforms both the set and get errors of the ZRef with the specified
functions.
Filters the set value of the ZRef with the specified predicate,
returning a ZRef with a set value that succeeds if the predicate is
satisfied or else fails with None.
Filters the set value of the ZRef with the specified predicate,
returning a ZRef with a set value that succeeds if the predicate is
satisfied or else fails with None.
Filters the get value of the ZRef with the specified predicate,
returning a ZRef with a get value that succeeds if the predicate is
satisfied or else fails with None.
Filters the get value of the ZRef with the specified predicate,
returning a ZRef with a get value that succeeds if the predicate is
satisfied or else fails with None.
Transforms the get value of the ZRef with the specified function.
Transforms the get value of the ZRef with the specified function.
Transforms the get value of the ZRef with the specified fallible
function.
Transforms the get value of the ZRef with the specified fallible
function.