Observe

trait Observe[M[_]] extends Observers[M]

If we are allowed effects M, then Val[A] can be observed for changes to a (mutable) value of type A (for any A).

trait Observers[M]
class Object
trait Matchable
class Any

Type members

Classlikes

class IObserveSyntaxHelper[D[_], Δ[_, _]](src: IVal[D])(using dom: AuxΔ[D, Δ])
sealed trait Observable[A, Δ]
final class ObserveSyntaxHelper[A, Δ](src: Observable[A, Δ])(using dom: AuxΔ[A, Δ])

Types

type IVal[_[_]]
type Val[A] = IVal[[i] =>> A]

Inherited types

type ITrigger[D[_], Δ[_, _], I]
Inherited from:
Observers
final type Trigger[A, Δ] = `Forall{* -> *}`[[_] =>> ITrigger[[i] =>> A, [i, j] =>> Δ, _$35]]
Inherited from:
Observers

Value members

Abstract methods

def iObserve[D[_], Δ[_, _]](src: IVal[D], f: [i] => (x$1: D[i]) => ITrigger[D, Δ, i])(implicit dom: AuxΔ[D, Δ]): M[Subscription[M]]
def observeImplC[A, U, Δ, B](src: Val[A])(f: A => ContU[M, (Trigger[A, Δ], B)])(implicit dom: Aux[A, U, Δ]): ContU[M, (Subscription[M], B)]

Concrete methods

def alternate[A, B, L, R](ref1: Val[A], ref2: Val[B])(f: (A, B) => Alternator, onStartLeft: () => M[L], onStartRight: () => M[R], onSwitchToLeft: R => M[L], onSwitchToRight: L => M[R], onStop: Option[Either[L, R]] => M[Unit])(implicit domA: Dom[A], domB: Dom[B], M: Bind[M]): M[Unit]
def alternate0[A, B](ref1: Val[A], ref2: Val[B])(f: (A, B) => Alternator, onSwitchToLeft: M[Unit], onSwitchToRight: M[Unit], onStop: M[Unit])(implicit domA: Dom[A], domB: Dom[B], M: Bind[M]): M[Unit]
def iObserve[D[_]](src: IVal[D])(using dom: IDom[D]): IObserveSyntaxHelper[D, IDelta]
def observable[A](src: Val[A])(using da: Dom[A]): Observable[A, Delta]
def observe[A](src: Val[A])(implicit dom: Dom[A]): ObserveSyntaxHelper[A, Delta]
def observeImpl[A, U, Δ](src: Val[A])(f: A => Trigger[A, Δ])(implicit dom: Aux[A, U, Δ]): M[Subscription[M]]
def peek_[A](ref: Val[A])(f: A => M[Unit])(implicit dom: Dom[A], M: Functor[M]): M[Unit]

Inherited methods

def continually[D, Δ](f: (D, Δ) => M[Unit]): (D, Δ) => Trigger[D, Δ]
Inherited from:
Observers
def continually[D, Δ](f: D => M[Unit]): D => Trigger[D, Δ]
Inherited from:
Observers
def discard[A, Δ]: Trigger[A, Δ]
Inherited from:
Observers
def fire[A, Δ](action: M[Unit]): Trigger[A, Δ]
Inherited from:
Observers
def fireReload[A, Δ](action: M[Unit], next: (A, Δ) => Trigger[A, Δ]): Trigger[A, Δ]
Inherited from:
Observers
def iContinually[D[_], Δ[_, _], I](f: [i, j] => (x$1: D[j], x$2: Δ[i, j]) => M[Unit]): [j] => (x$1: D[j], x$2: Δ[I, j]) => ITrigger[D, Δ, j]
Inherited from:
Observers
def iContinually[D[_], Δ[_, _]](f: [i] => (x$1: D[i]) => M[Unit]): [i] => (x$1: D[i]) => ITrigger[D, Δ, i]
Inherited from:
Observers
def iDiscard[D[_], Δ[_, _], I]: ITrigger[D, Δ, I]
Inherited from:
Observers
def iFire[D[_], Δ[_, _], I](action: M[Unit]): ITrigger[D, Δ, I]
Inherited from:
Observers
def iFireReload[D[_], Δ[_, _], I](action: M[Unit], next: [j] => (x$1: D[j], x$2: Δ[I, j]) => ITrigger[D, Δ, j]): ITrigger[D, Δ, I]
Inherited from:
Observers
def iReconsider[D[_], Δ[_, _], I](action: M[ITrigger[D, Δ, I]]): ITrigger[D, Δ, I]
Inherited from:
Observers
def iSleep[D[_], Δ[_, _], I](next: [j] => (x$1: D[j], x$2: Δ[I, j]) => ITrigger[D, Δ, j]): ITrigger[D, Δ, I]
Inherited from:
Observers
def iThreshold[D[_], Δ[_, _]](f: [i] => (x$1: D[i]) => Option[M[Unit]]): [i] => (x$1: D[i]) => ITrigger[D, Δ, i]
Inherited from:
Observers
def observerS[D, Δ, S](s: S)(f: S => TriggerF[M, D, Δ, S]): Trigger[D, Δ]
Inherited from:
Observers
def reconsider[A, Δ](action: M[Trigger[A, Δ]]): Trigger[A, Δ]
Inherited from:
Observers
def sleep[A, Δ](next: (A, Δ) => Trigger[A, Δ]): Trigger[A, Δ]
Inherited from:
Observers
def threshold[D, Δ](f: D => Option[M[Unit]]): D => Trigger[D, Δ]

Keep trying f until it returns Some. Then fire the returned program.

Keep trying f until it returns Some. Then fire the returned program.

Inherited from:
Observers
def threshold1[D, Δ](f: D => Option[M[Unit]]): (D, Δ) => Trigger[D, Δ]

Keep trying f until it returns Some. Then fire the returned program.

Keep trying f until it returns Some. Then fire the returned program.

Inherited from:
Observers
def thresholdOpt[D, Δ](f: D => Option[Option[M[Unit]]]): D => Trigger[D, Δ]

Keep trying f until it returns Some. Then fire the returned program, if any.

Keep trying f until it returns Some. Then fire the returned program, if any.

Inherited from:
Observers
def thresholdOpt1[D, Δ](f: D => Option[Option[M[Unit]]]): (D, Δ) => Trigger[D, Δ]

Keep trying f until it returns Some. Then fire the returned program, if any.

Keep trying f until it returns Some. Then fire the returned program, if any.

Inherited from:
Observers
def thresholdTransition[D, Δ](f: D => Option[Trigger[D, Δ]]): D => Trigger[D, Δ]
Inherited from:
Observers
def thresholdTransition1[D, Δ](f: D => Option[Trigger[D, Δ]]): (D, Δ) => Trigger[D, Δ]
Inherited from:
Observers
def untilRight[D, Δ](f: (D, Δ) => Either[M[Unit], M[Unit]]): (D, Δ) => Trigger[D, Δ]
Inherited from:
Observers
def untilRight[D, Δ](f: D => Either[M[Unit], M[Unit]]): D => Trigger[D, Δ]
Inherited from:
Observers
def untilRightS[S, D, Δ](s: S)(f: (S, D, Δ) => Either[M[S], M[Unit]]): (D, Δ) => Trigger[D, Δ]
Inherited from:
Observers
def untilRightS[S, D, Δ](init: D => Either[M[S], M[Unit]], trans: (S, D, Δ) => Either[M[S], M[Unit]]): D => Trigger[D, Δ]
Inherited from:
Observers
def untilRightSeq[D, Δ](f: (D, Δ) => Either[M[Unit], M[Unit]]): (D, Δ) => Trigger[D, Δ]
Inherited from:
Observers
def untilRightSeq[D, Δ](f: D => Either[M[Unit], M[Unit]]): D => Trigger[D, Δ]
Inherited from:
Observers

Extensions

Inherited extensions

extension [D, Δ](t: Trigger[D, Δ])
def contramap[C, Γ](f: C => D, g: Γ => Δ): Trigger[C, Γ]
Inherited from:
Observers
extension [D[_], Δ[_, _], I](t: ITrigger[D, Δ, I])
def contramap[C[_], Γ[_, _]](f: [i] => (x$1: C[i]) => D[i], g: [i, j] => (x$1: Γ[i, j]) => Δ[i, j]): ITrigger[C, Γ, I]
Inherited from:
Observers

Implicits

Inherited implicits

implicit def M: Functor[M]
Inherited from:
Observers