GitHub

SynchronizedRef

API reference for SynchronizedRef.

SynchronizedRef(value) is Effect's makeUnsafe.

Functions

__init__

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

make

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

Returns Effect[SynchronizedRef[T]]

@staticmethod
def make[T](value: T) -> Effect[SynchronizedRef[T]]:
    return _Sync(lambda: SynchronizedRef(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]:
    return self._locked(lambda _: (None, Some(value)))

set_and_get

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

Returns Effect[A]

def set_and_get(self, value: A) -> Effect[A]:
    return self._locked(lambda _: (value, Some(value)))

get_and_set

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

Returns Effect[A]

def get_and_set(self, value: A) -> Effect[A]:
    return self._locked(lambda old: (old, Some(value)))

update

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

Returns Effect[None]

def update(self, f: Callable[[A], A]) -> Effect[None]:
    return self._locked(lambda old: (None, Some(f(old))))

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]:
    return self._locked(lambda old: _new_and_get(f(old)))

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]:
    return self._locked(lambda old: (old, Some(f(old))))

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]:
    return self._locked(lambda old: (None, f(old)))

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]:
    return self._locked(lambda old: _some_and_get(old, f(old)))

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]:
    return self._locked(lambda old: (old, f(old)))

modify

modify(f) -> Effect[B]
ParameterTypeDescription
fCallable[[A], tuple[B, A]]

Returns Effect[B]

def modify[B](self, f: Callable[[A], tuple[B, A]]) -> Effect[B]:
    return self._locked(lambda old: _modified(f(old)))

modify_some

modify_some(f) -> Effect[B]
ParameterTypeDescription
fCallable[[A], tuple[B, Option[A]]]

Returns Effect[B]

def modify_some[B](self, f: Callable[[A], tuple[B, Option[A]]]) -> Effect[B]:
    return self._locked(f)

update_effect

update_effect(f) -> Effect[None, E, R]
ParameterTypeDescription
fCallable[[A], Effect[A, E, R]]

Returns Effect[None, E, R]

def update_effect[E = Never, R = Never](
    self, f: Callable[[A], Effect[A, E, R]]
) -> Effect[None, E, R]:
    return self._locked_effect(lambda old: f(old).map(lambda new: (None, Some(new))))

update_and_get_effect

update_and_get_effect(f) -> Effect[A, E, R]
ParameterTypeDescription
fCallable[[A], Effect[A, E, R]]

Returns Effect[A, E, R]

def update_and_get_effect[E = Never, R = Never](
    self, f: Callable[[A], Effect[A, E, R]]
) -> Effect[A, E, R]:
    return self._locked_effect(lambda old: f(old).map(_new_and_get))

get_and_update_effect

get_and_update_effect(f) -> Effect[A, E, R]
ParameterTypeDescription
fCallable[[A], Effect[A, E, R]]

Returns Effect[A, E, R]

def get_and_update_effect[E = Never, R = Never](
    self, f: Callable[[A], Effect[A, E, R]]
) -> Effect[A, E, R]:
    return self._locked_effect(lambda old: f(old).map(lambda new: (old, Some(new))))

update_some_effect

update_some_effect(f) -> Effect[None, E, R]
ParameterTypeDescription
fCallable[[A], Effect[Option[A], E, R]]

Returns Effect[None, E, R]

def update_some_effect[E = Never, R = Never](
    self, f: Callable[[A], Effect[Option[A], E, R]]
) -> Effect[None, E, R]:
    return self._locked_effect(lambda old: f(old).map(lambda new: (None, new)))

update_some_and_get_effect

update_some_and_get_effect(f) -> Effect[A, E, R]
ParameterTypeDescription
fCallable[[A], Effect[Option[A], E, R]]

Returns Effect[A, E, R]

def update_some_and_get_effect[E = Never, R = Never](
    self, f: Callable[[A], Effect[Option[A], E, R]]
) -> Effect[A, E, R]:
    return self._locked_effect(lambda old: f(old).map(lambda new: _some_and_get(old, new)))

get_and_update_some_effect

get_and_update_some_effect(f) -> Effect[A, E, R]
ParameterTypeDescription
fCallable[[A], Effect[Option[A], E, R]]

Returns Effect[A, E, R]

def get_and_update_some_effect[E = Never, R = Never](
    self, f: Callable[[A], Effect[Option[A], E, R]]
) -> Effect[A, E, R]:
    return self._locked_effect(lambda old: f(old).map(lambda new: (old, new)))

modify_effect

modify_effect(f) -> Effect[B, E, R]
ParameterTypeDescription
fCallable[[A], Effect[tuple[B, A], E, R]]

Returns Effect[B, E, R]

def modify_effect[B, E = Never, R = Never](
    self, f: Callable[[A], Effect[tuple[B, A], E, R]]
) -> Effect[B, E, R]:
    return self._locked_effect(lambda old: f(old).map(_modified))

modify_some_effect

modify_some_effect(f) -> Effect[B, E, R]
ParameterTypeDescription
fCallable[[A], Effect[tuple[B, Option[A]], E, R]]

Returns Effect[B, E, R]

def modify_some_effect[B, E = Never, R = Never](
    self, f: Callable[[A], Effect[tuple[B, Option[A]], E, R]]
) -> Effect[B, E, R]:
    return self._locked_effect(f)