OnDemandPropagation

trait OnDemandPropagation[M[_]] extends Propagation[M]
Companion:
object
trait Propagation[M]
trait Observe[M]
trait Observers[M]
class Object
trait Matchable
class Any

Type members

Classlikes

final class ExclUpdateSyntaxHelper[D, U, Δ](ref: ExclRef[D])(implicit dom: Aux[D, U, Δ])

Inherited classlikes

class IObserveSyntaxHelper[D[_], Δ[_, _]](src: IVal[D])(using dom: AuxΔ[D, Δ])
Inherited from:
Observe
sealed trait Observable[A, Δ]
Inherited from:
Observe
final class ObserveSyntaxHelper[A, Δ](src: Observable[A, Δ])(using dom: AuxΔ[A, Δ])
Inherited from:
Observe
final class UpdateSyntaxHelper[D, U, Δ](ref: Var[D])(implicit dom: Aux[D, U, Δ])
Inherited from:
Propagation

Types

type ExclRef[A]

Inherited types

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

Value members

Abstract methods

def addFinalizer[A](ref: ExclRef[A], value: Subscription[M]): M[Subscription[M]]

Register a cleanup routine to execute at the end of the cell-cycle, i.e. when all of cell's observers unregister. If the cycle in which the given cell was created already ended, the cleanup will be executed immediately.

Register a cleanup routine to execute at the end of the cell-cycle, i.e. when all of cell's observers unregister. If the cycle in which the given cell was created already ended, the cleanup will be executed immediately.

Returns:

A subscription that can be used to remove the registered finalizer early, before the end of the cell cycle. In such case, the finalizer is not executed.

def exclUpdateImpl[A, U, Δ](ref: ExclRef[A], u: U)(implicit dom: Aux[A, U, Δ]): M[Unit]
def newAutoCellC[A](setup: IndexedContT[Unit, ExclRef[A], M, A])(implicit dom: Dom[A]): M[Val[A]]

Creates a cell that will setup itself when the first observer is registered. Typically the setup routine starts to observe other cells.

Creates a cell that will setup itself when the first observer is registered. Typically the setup routine starts to observe other cells.

The setup routine can use the addFinalizer* method to register cleanup routines (finalizers) that will be executed when all observers leave. Typically, such finalizers will stop observing other cells.

Concrete methods

def exclUpdate[D](ref: ExclRef[D])(implicit dom: Dom[D]): ExclUpdateSyntaxHelper[D, Update, Delta]
def newAutoCell[A](setup: A => M[ExclRef[A]] => M[Unit])(implicit dom: Dom[A]): M[Val[A]]

Inherited 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]
Inherited from:
Observe
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]
Inherited from:
Observe
def cells[D](d: D, n: Int)(implicit dom: Dom[D]): M[Vector[Var[D]]]
Inherited from:
Propagation
def constOut[A](a: A): Out[A]
Inherited from:
Propagation
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 flatMapOut[A, B](a: Out[A])(f: A => Out[B]): Out[B]
Inherited from:
Propagation
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 iObserve[D[_]](src: IVal[D])(using dom: IDom[D]): IObserveSyntaxHelper[D, IDelta]
Inherited from:
Observe
def iObserve[D[_], Δ[_, _]](src: IVal[D], f: [i] => (x$1: D[i]) => ITrigger[D, Δ, i])(implicit dom: AuxΔ[D, Δ]): M[Subscription[M]]
Inherited from:
Observe
def iOut[D[_]](v: IVar[D]): Out[Exists[D]]
Inherited from:
Propagation
def iOut[D[_], B](v: IVar[D], f: [i] => (x$1: D[i]) => B): Out[B]
Inherited from:
Propagation
def iReadOnly[D[_]](a: IVar[D]): IVal[D]
Inherited from:
Propagation
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 iUpdate[D[_], U[_], J](ref: IVar[D])(u: U[J])(implicit dom: Aux0[D, U]): M[Exists[IUpdateRes]]
Inherited from:
Propagation
def mapOut[A, B](a: Out[A])(f: A => B): Out[B]
Inherited from:
Propagation
def newCell[D](implicit dom: DomWithBottom[D]): M[Var[D]]
Inherited from:
Propagation
final def newCell[D](d: D)(implicit dom: Dom[D]): M[Var[D]]
Inherited from:
Propagation
def newICell[D[_], I](d: D[I])(implicit dom: IDom[D]): M[IVar[D]]
Inherited from:
Propagation
def observable[A](src: Val[A])(using da: Dom[A]): Observable[A, Delta]
Inherited from:
Observe
def observe[A](src: Val[A])(implicit dom: Dom[A]): ObserveSyntaxHelper[A, Delta]
Inherited from:
Observe
def observeImpl[A, U, Δ](src: Val[A])(f: A => Trigger[A, Δ])(implicit dom: Aux[A, U, Δ]): M[Subscription[M]]
Inherited from:
Observe
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)]
Inherited from:
Observe
def observerS[D, Δ, S](s: S)(f: S => TriggerF[M, D, Δ, S]): Trigger[D, Δ]
Inherited from:
Observers
def out[D](v: Var[D]): Out[D]
Inherited from:
Propagation
def pairOut[A, B](a: Out[A], b: Out[B]): Out[(A, B)]
Inherited from:
Propagation
def peek_[A](ref: Val[A])(f: A => M[Unit])(implicit dom: Dom[A], M: Functor[M]): M[Unit]
Inherited from:
Observe
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
def update[D](ref: Var[D])(implicit dom: Dom[D]): UpdateSyntaxHelper[D, Update, Delta]
Inherited from:
Propagation
final def updateImpl[D, U, Δ](ref: Var[D])(u: U)(implicit dom: Aux[D, U, Δ]): M[Unit]
Inherited from:
Propagation

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 override def M: Monad[M]
Definition Classes
Inherited from:
Propagation
implicit def monadOut: Monad[Out]
Inherited from:
Propagation
implicit def readOnly[A](ref: Var[A]): Val[A]
Inherited from:
Propagation