GitHub

API reference for Ref.

Ref(value) is Effect's makeUnsafe; Ref.make is the effect.

Functions

__init__

__init__(value) -> None
ParameterTypeDescription
valueA
def __init__(self, value: A) -> None:
    self._value = value

make

make(value) -> Effect[Ref[T]]
ParameterTypeDescription
valueT

Returns Effect[Ref[T]]

@staticmethod
def make[T](value: T) -> Effect[Ref[T]]:
    return _Sync(lambda: Ref(value))

unsafe_get

unsafe_get() -> A

Returns A

def unsafe_get(self) -> A:
    return self._value

get

get() -> Effect[A]

Returns Effect[A]

def get(self) -> Effect[A]:
    return _Sync(lambda: self._value)

set

set(value) -> Effect[None]
ParameterTypeDescription
valueA

Returns Effect[None]

def set(self, value: A) -> Effect[None]:
    def run() -> None:
        self._value = value

    return _Sync(run)

set_and_get

set_and_get(value) -> Effect[A]
ParameterTypeDescription
valueA

Returns Effect[A]

def set_and_get(self, value: A) -> Effect[A]:
    def run() -> A:
        self._value = value
        return value

    return _Sync(run)

get_and_set

get_and_set(value) -> Effect[A]
ParameterTypeDescription
valueA

Returns Effect[A]

def get_and_set(self, value: A) -> Effect[A]:
    def run() -> A:
        old, self._value = self._value, value
        return old

    return _Sync(run)

update

update(f) -> Effect[None]
ParameterTypeDescription
fCallable[[A], A]

Returns Effect[None]

def update(self, f: Callable[[A], A]) -> Effect[None]:
    def run() -> None:
        self._value = f(self._value)

    return _Sync(run)

update_and_get

update_and_get(f) -> Effect[A]
ParameterTypeDescription
fCallable[[A], A]

Returns Effect[A]

def update_and_get(self, f: Callable[[A], A]) -> Effect[A]:
    def run() -> A:
        self._value = f(self._value)
        return self._value

    return _Sync(run)

get_and_update

get_and_update(f) -> Effect[A]
ParameterTypeDescription
fCallable[[A], A]

Returns Effect[A]

def get_and_update(self, f: Callable[[A], A]) -> Effect[A]:
    def run() -> A:
        old = self._value
        self._value = f(old)
        return old

    return _Sync(run)

update_some

update_some(f) -> Effect[None]
ParameterTypeDescription
fCallable[[A], Option[A]]

Returns Effect[None]

def update_some(self, f: Callable[[A], Option[A]]) -> Effect[None]:
    def run() -> None:
        if (new := f(self._value)) is not None:
            self._value = new.value

    return _Sync(run)

update_some_and_get

update_some_and_get(f) -> Effect[A]
ParameterTypeDescription
fCallable[[A], Option[A]]

Returns Effect[A]

def update_some_and_get(self, f: Callable[[A], Option[A]]) -> Effect[A]:
    def run() -> A:
        if (new := f(self._value)) is not None:
            self._value = new.value
        return self._value

    return _Sync(run)

get_and_update_some

get_and_update_some(f) -> Effect[A]
ParameterTypeDescription
fCallable[[A], Option[A]]

Returns Effect[A]

def get_and_update_some(self, f: Callable[[A], Option[A]]) -> Effect[A]:
    def run() -> A:
        old = self._value
        if (new := f(old)) is not None:
            self._value = new.value
        return old

    return _Sync(run)

modify

modify(f) -> Effect[B]

Compute a result and a new value from the current one, atomically.

ParameterTypeDescription
fCallable[[A], tuple[B, A]]

Returns Effect[B]

def modify[B](self, f: Callable[[A], tuple[B, A]]) -> Effect[B]:
    """Compute a result and a new value from the current one, atomically."""

    def run() -> B:
        result, self._value = f(self._value)
        return result

    return _Sync(run)

modify_some

modify_some(f) -> Effect[B]

modify whose new value is optional: None keeps the current one.

ParameterTypeDescription
fCallable[[A], tuple[B, Option[A]]]

Returns Effect[B]

def modify_some[B](self, f: Callable[[A], tuple[B, Option[A]]]) -> Effect[B]:
    """``modify`` whose new value is optional: ``None`` keeps the current one."""

    def run() -> B:
        result, new = f(self._value)
        if new is not None:
            self._value = new.value
        return result

    return _Sync(run)