AbstractStarterKit

libretto.scaletto.AbstractStarterKit
abstract class AbstractStarterKit(val dsl: Scaletto, val bridge: Of[dsl.type], val executorFactory: Of[dsl.type, bridge.type], val executor0: (ScheduledExecutorService, Executor) => Of[dsl.type, bridge.type])(using val supportsCustomScheduler: SupportsCustomScheduler[executorFactory.ExecutionParam])

Attributes

Graph
Supertypes
class Object
trait Matchable
class Any
Known subtypes
class StarterKit
object StarterKit

Members list

Value members

Concrete methods

def executor(blockingExecutor: Executor)(scheduler: ScheduledExecutorService): Of[dsl.type, bridge.type]
def runAsync(blueprint: Done dsl.-⚬ Done): Future[Unit]
def runScalaAsync[A](blueprint: Done dsl.-⚬ dsl.Val[A]): Future[A]

Concrete fields

val bridge: Of[dsl.type]
val crashLib: CrashLib[dsl.type]
val dsl: Scaletto
val executor0: (ScheduledExecutorService, Executor) => Of[dsl.type, bridge.type]
val executorFactory: Of[dsl.type, bridge.type]
val puroLib: PuroLib[dsl.type]
val scalettoLib: ScalettoLib[dsl.type, puroLib.type]

Givens

Givens

given supportsCustomScheduler: SupportsCustomScheduler[executorFactory.ExecutionParam]

Exports

Defined exports

val $: Puro.this.$Ops
Exported from Puro
final type $ = dsl.$
Exported from Puro
final type $Ops = dsl.$Ops
Exported from Puro
final val *: Puro.this.*
Exported from Puro
final val **: ScalettoLib.this.**
Exported from ScalettoLib
final val +: Puro.this.+
Exported from Puro
final val -: Puro.this.-
Exported from Puro
final type - = dsl.-
Exported from Puro
final val --: Puro.this.--
Exported from Puro
final type -⚬ = dsl.-⚬
Exported from Puro
final type :: = dsl.::
Exported from Puro
final type =⚬ = dsl.=⚬
Exported from Puro
final val ?: Puro.this.?
Exported from Puro
final type ?? = dsl.??
Exported from Puro
Exported from PuroLib
final type AcquiredLock = puroLib.AcquiredLock
Exported from PuroLib
val Affine: Affine.type
Exported from Puro
final type Affine = dsl.Affine
Exported from Puro
final type AssemblyError = dsl.AssemblyError
Exported from Puro
final type BiExternalizer = [F[_, _]] =>> puroLib.BiExternalizer[F]
Exported from PuroLib
final val Bifunctor: PuroLib.this.Bifunctor
Exported from PuroLib
final type Bifunctor = [F[_, _]] =>> puroLib.Bifunctor[F]
Exported from PuroLib
final val Bool: PuroLib.this.Bool
Exported from PuroLib
final type Bool = puroLib.Bool
Exported from PuroLib
final val Closeable: PuroLib.this.Closeable
Exported from PuroLib
final type Closeable = puroLib.Closeable
Exported from PuroLib
Exported from PuroLib
final type ClosureOps = dsl.ClosureOps
Exported from Puro
final type Comonad = [F[_]] =>> puroLib.Comonad[F]
Exported from PuroLib
final type Comonoid = dsl.Comonoid
Exported from Puro
final type Comparable = puroLib.Comparable
Exported from PuroLib
final val Compared: PuroLib.this.Compared
Exported from PuroLib
Exported from Puro
Exported from PuroLib
final type ContraExternalizer = [F[_]] =>> puroLib.ContraExternalizer[F]
Exported from PuroLib
Exported from PuroLib
final type ContraFunctor = [F[_]] =>> puroLib.ContraFunctor[F]
Exported from PuroLib
final type Cosemigroup = dsl.Cosemigroup
Exported from Puro
final val Deferrable: PuroLib.this.Deferrable
Exported from PuroLib
final val Deferred: PuroLib.this.Deferred
Exported from PuroLib
final type Deferred = puroLib.Deferred
Exported from PuroLib
final val Detained: PuroLib.this.Detained
Exported from PuroLib
final type Detained = puroLib.Detained
Exported from PuroLib
final type Done = dsl.Done
Exported from Puro
final val Dual: PuroLib.this.Dual
Exported from PuroLib
final type Dual = puroLib.Dual
Exported from PuroLib
final type Dual1 = [F[_], G[_]] =>> puroLib.Dual1[F, G]
Exported from PuroLib
final val Endless: PuroLib.this.Endless
Exported from PuroLib
final type Endless = puroLib.Endless
Exported from PuroLib
Exported from PuroLib
final type Externalizer = [F[_]] =>> puroLib.Externalizer[F]
Exported from PuroLib
final type FocusedBi = [F[_, _], B1, B2] =>> puroLib.FocusedBi[F, B1, B2]
Exported from PuroLib
final type FocusedCo = [F[_], B] =>> puroLib.FocusedCo[F, B]
Exported from PuroLib
final type FocusedContra = [F[_], B] =>> puroLib.FocusedContra[F, B]
Exported from PuroLib
final implicit def FocusedOnChoiceCo[F[_], B1, B2](f: PuroLib.this.FocusedCo[F, B1 PuroLib.this.dsl.|&| B2]): PuroLib.this.FocusedOnChoiceCo[F, B1, B2]
Exported from PuroLib
final type FocusedOnChoiceCo = [F[_], B1, B2] =>> puroLib.FocusedOnChoiceCo[F, B1, B2]
Exported from PuroLib
final implicit def FocusedOnChoiceContra[A, F[_], B1, B2](f: PuroLib.this.FocusedContra[F, B1 PuroLib.this.dsl.|&| B2]): PuroLib.this.FocusedOnChoiceContra[A, F, B1, B2]
Exported from PuroLib

Extends the focus to the left/right side of the (currently focused) consumer choice.

Extends the focus to the left/right side of the (currently focused) consumer choice.

Attributes

final type FocusedOnChoiceContra = [A, F[_], B1, B2] =>> puroLib.FocusedOnChoiceContra[A, F, B1, B2]
Exported from PuroLib
final implicit def FocusedOnPairCo[F[_], B1, B2](f: PuroLib.this.FocusedCo[F, B1 PuroLib.this.dsl.|*| B2]): PuroLib.this.FocusedOnPairCo[F, B1, B2]
Exported from PuroLib
final type FocusedOnPairCo = [F[_], B1, B2] =>> puroLib.FocusedOnPairCo[F, B1, B2]
Exported from PuroLib
final implicit def FocusedOnPairContra[A, F[_], B1, B2](f: PuroLib.this.FocusedContra[F, B1 PuroLib.this.dsl.|*| B2]): PuroLib.this.FocusedOnPairContra[A, F, B1, B2]
Exported from PuroLib
final type FocusedOnPairContra = [A, F[_], B1, B2] =>> puroLib.FocusedOnPairContra[A, F, B1, B2]
Exported from PuroLib
final implicit def FocusedOnPlusCo[F[_], B1, B2](f: PuroLib.this.FocusedCo[F, B1 PuroLib.this.dsl.|+| B2]): PuroLib.this.FocusedOnPlusCo[F, B1, B2]
Exported from PuroLib
final type FocusedOnPlusCo = [F[_], B1, B2] =>> puroLib.FocusedOnPlusCo[F, B1, B2]
Exported from PuroLib
final implicit def FocusedOnPlusContra[A, F[_], B1, B2](f: PuroLib.this.FocusedContra[F, B1 PuroLib.this.dsl.|+| B2]): PuroLib.this.FocusedOnPlusContra[A, F, B1, B2]
Exported from PuroLib

Extends the focus to the left/right side of the (currently focused) producer choice.

Extends the focus to the left/right side of the (currently focused) producer choice.

Attributes

final type FocusedOnPlusContra = [A, F[_], B1, B2] =>> puroLib.FocusedOnPlusContra[A, F, B1, B2]
Exported from PuroLib
final val Functor: PuroLib.this.Functor
Exported from PuroLib
final type Functor = [F[_]] =>> puroLib.Functor[F]
Exported from PuroLib
final val Getter: PuroLib.this.Getter
Exported from PuroLib
final type Getter = puroLib.Getter
Exported from PuroLib
def IV[A, B, C, D](f: (B PuroLib.this.dsl.|*| C) PuroLib.this.dsl.-⚬ D): (A PuroLib.this.dsl.|*| B PuroLib.this.dsl.|*| C) PuroLib.this.dsl.-⚬ (A PuroLib.this.dsl.|*| D)
Exported from PuroLib
def IX[A, B, C]: (A PuroLib.this.dsl.|*| B PuroLib.this.dsl.|*| C) PuroLib.this.dsl.-⚬ (A PuroLib.this.dsl.|*| C PuroLib.this.dsl.|*| B)
Exported from PuroLib
def IXI[A, B, C, D]: (A PuroLib.this.dsl.|*| B PuroLib.this.dsl.|*| (C PuroLib.this.dsl.|*| D)) PuroLib.this.dsl.-⚬ (A PuroLib.this.dsl.|*| C PuroLib.this.dsl.|*| (B PuroLib.this.dsl.|*| D))
Exported from PuroLib
final type Id = puroLib.Id
Exported from PuroLib
def InL[A, B]: Extractor[Puro.this.-⚬, Puro.this.|*|, A Puro.this.|+| B, A]
Exported from Puro
def InR[A, B]: Extractor[Puro.this.-⚬, Puro.this.|*|, A Puro.this.|+| B, B]
Exported from Puro
def [A, B, C, D](f: B PuroLib.this.dsl.-⚬ (C PuroLib.this.dsl.|*| D)): (A PuroLib.this.dsl.|*| B) PuroLib.this.dsl.-⚬ (A PuroLib.this.dsl.|*| C PuroLib.this.dsl.|*| D)
Exported from PuroLib

Λ is the uppercase Greek letter lambda.

Λ is the uppercase Greek letter lambda.

Attributes

final val Junction: PuroLib.this.Junction
Exported from PuroLib
final val LList: PuroLib.this.LList
Exported from PuroLib
final type LList = puroLib.LList
Exported from PuroLib
final val LList1: PuroLib.this.LList1
Exported from PuroLib
final type LList1 = puroLib.LList1
Exported from PuroLib
final type LTerminus = dsl.LTerminus
Exported from Puro
final type LambdaContext = dsl.LambdaContext
Exported from Puro
final type LambdaOps = dsl.LambdaOps
Exported from Puro
final val Lease: PuroLib.this.Lease
Exported from PuroLib
final type Lease = puroLib.Lease
Exported from PuroLib
final val LeasePool: PuroLib.this.LeasePool
Exported from PuroLib
final type LeasePool = puroLib.LeasePool
Exported from PuroLib
final val Lens: PuroLib.this.Lens
Exported from PuroLib
final type Lens = puroLib.Lens
Exported from PuroLib
final implicit def LinearFunctionOps[A, B](self: A PuroLib.this.dsl.-⚬ B): PuroLib.this.LinearFunctionOps[A, B]
Exported from PuroLib
final type LinearFunctionOps = puroLib.LinearFunctionOps
Exported from PuroLib
final val Lock: PuroLib.this.Lock
Exported from PuroLib
final type Lock = puroLib.Lock
Exported from PuroLib
final val Maybe: PuroLib.this.Maybe
Exported from PuroLib
final type Maybe = puroLib.Maybe
Exported from PuroLib
final type Monad = [F[_]] =>> puroLib.Monad[F]
Exported from PuroLib
final val Monoid: PuroLib.this.Monoid
Exported from PuroLib
final type Monoid = puroLib.Monoid
Exported from PuroLib
final val Multiple: PuroLib.this.Multiple
Exported from PuroLib
final type Multiple = puroLib.Multiple
Exported from PuroLib
final val NAffine: PuroLib.this.NAffine
Exported from PuroLib
final type NAffine = puroLib.NAffine
Exported from PuroLib
final type NComonoid = puroLib.NComonoid
Exported from PuroLib
final val NMonoid: PuroLib.this.NMonoid
Exported from PuroLib
final type NMonoid = puroLib.NMonoid
Exported from PuroLib
final type Need = dsl.Need
Exported from Puro
final type Neg = dsl.Neg
Exported from Scaletto
final type One = dsl.One
Exported from Puro
val OneOf: EnumModule[Puro.this.-⚬, Puro.this.|*|, Puro.this.OneOf, Puro.this.||, Puro.this.::]
Exported from Puro
final type OneOf = dsl.OneOf
Exported from Puro
final val Optionally: PuroLib.this.Optionally
Exported from PuroLib
final type Optionally = puroLib.Optionally
Exported from PuroLib
final val PMaybe: PuroLib.this.PMaybe
Exported from PuroLib
final type PMaybe = puroLib.PMaybe
Exported from PuroLib
final type PMonoid = puroLib.PMonoid
Exported from PuroLib
final val PUnlimited: PuroLib.this.PUnlimited
Exported from PuroLib
final type PUnlimited = puroLib.PUnlimited
Exported from PuroLib
final type Ping = dsl.Ping
Exported from Puro
final type Pong = dsl.Pong
Exported from Puro
final type RTerminus = dsl.RTerminus
Exported from Puro
final type Rec = [F[_]] =>> dsl.Rec[F]
Exported from Puro
Exported from ScalettoLib
final type RefCounted = scalettoLib.RefCounted
Exported from ScalettoLib
final type Res = dsl.Res
Exported from Scaletto
Exported from Scaletto
final type ScalaFun = dsl.ScalaFun
Exported from Scaletto
final type ScalaFuns = dsl.ScalaFuns
Exported from Scaletto
final val Semigroup: PuroLib.this.Semigroup
Exported from PuroLib
final type Semigroup = puroLib.Semigroup
Exported from PuroLib
final val Signaling: PuroLib.this.Signaling
Exported from PuroLib
Exported from PuroLib
final type Sub = dsl.Sub
Exported from Puro
final type Switch = dsl.Switch
Exported from Puro
final type SwitchInit = dsl.SwitchInit
Exported from Puro
Exported from PuroLib
final type Transportive = [F[_]] =>> puroLib.Transportive[F]
Exported from PuroLib
override val UInt31: Scaletto.this.UInt31Scaletto
Exported from Scaletto
final type UInt31 = dsl.UInt31
Exported from Puro
final type UInt31Scaletto = dsl.UInt31Scaletto
Exported from Scaletto
final type UInt31s = dsl.UInt31s
Exported from Puro
final val Unlimited: PuroLib.this.Unlimited
Exported from PuroLib
final type Unlimited = puroLib.Unlimited
Exported from PuroLib
def VI[A, B, C, D](f: (A PuroLib.this.dsl.|*| B) PuroLib.this.dsl.-⚬ D): (A PuroLib.this.dsl.|*| (B PuroLib.this.dsl.|*| C)) PuroLib.this.dsl.-⚬ (D PuroLib.this.dsl.|*| C)
Exported from PuroLib
final type Val = dsl.Val
Exported from Scaletto
final val Val: ScalettoLib.this.Val
Exported from ScalettoLib
final val ValSwitch: Scaletto.this.ValSwitch
Exported from Scaletto
final type ValSwitch = dsl.ValSwitch
Exported from Scaletto
final type ValSwitchInit = dsl.ValSwitchInit
Exported from Scaletto
final type ValSwitchInitCase = [A, A0 <: A] =>> dsl.ValSwitchInitCase[A, A0]
Exported from Scaletto
final type Void = dsl.Void
Exported from Puro
def XI[A, B, C]: (A PuroLib.this.dsl.|*| (B PuroLib.this.dsl.|*| C)) PuroLib.this.dsl.-⚬ (B PuroLib.this.dsl.|*| (A PuroLib.this.dsl.|*| C))
Exported from PuroLib
def absorbR[A, B, C]: ((A PuroLib.this.dsl.=⚬ B) PuroLib.this.dsl.|*| C) PuroLib.this.dsl.-⚬ (A PuroLib.this.dsl.=⚬ (B PuroLib.this.dsl.|*| C))
Exported from PuroLib

Make a function A =⚬ B ''"absorb"'' a C and return it as part of its output, i.e. A =⚬ (B |*| C).

Make a function A =⚬ B ''"absorb"'' a C and return it as part of its output, i.e. A =⚬ (B |*| C).

Attributes

def absurd[A]: Puro.this.Void Puro.this.-⚬ A
Exported from Puro
def acquire[A, R, B](acquire: A => (R, B), release: Option[R => Unit]): Scaletto.this.Val[A] Scaletto.this.-⚬ (Scaletto.this.Res[R] Scaletto.this.|*| Scaletto.this.Val[B])
Exported from Scaletto

Acquires a resource of type R.

Acquires a resource of type R.

Type parameters

A

parameters of the acquire function

B

additional data produced by acquiring the resource

R

type of the resource

Value parameters

release

called to release the resource in case of a crash. None means no cleanup is needed

Attributes

def acquire[A, R, B](acquire: Scaletto.this.ScalaFun[A, (R, B)], release: Option[Scaletto.this.ScalaFun[R, Unit]]): Scaletto.this.Val[A] Scaletto.this.-⚬ (Scaletto.this.Res[R] Scaletto.this.|*| Scaletto.this.Val[B])
Exported from Scaletto
def acquire0[A, R](acquire: A => R, release: Option[R => Unit]): ScalettoLib.this.dsl.Val[A] ScalettoLib.this.dsl.-⚬ ScalettoLib.this.dsl.Res[R]
Exported from ScalettoLib

Variant of acquire that does not produce extra output in addition to the resource.

Variant of acquire that does not produce extra output in addition to the resource.

Attributes

def acquireAsync[A, R, B](acquire: A => Async[(R, B)], release: Option[R => Async[Unit]]): Scaletto.this.Val[A] Scaletto.this.-⚬ (Scaletto.this.Res[R] Scaletto.this.|*| Scaletto.this.Val[B])
Exported from Scaletto
def acquireAsync0[A, R](acquire: A => Async[R], release: Option[R => Async[Unit]]): ScalettoLib.this.dsl.Val[A] ScalettoLib.this.dsl.-⚬ ScalettoLib.this.dsl.Res[R]
Exported from ScalettoLib

Variant of acquireAsync that does not produce extra output in addition to the resource.

Variant of acquireAsync that does not produce extra output in addition to the resource.

Attributes

def alsoPrintLine[A](f: A => String): ScalettoLib.this.dsl.Val[A] ScalettoLib.this.dsl.-⚬ ScalettoLib.this.dsl.Val[A]
Exported from ScalettoLib
def alsoPrintLine: ScalettoLib.this.dsl.Val[String] ScalettoLib.this.dsl.-⚬ ScalettoLib.this.dsl.Val[String]
Exported from ScalettoLib
def andThen[A, B, C](f: A Puro.this.-⚬ B, g: B Puro.this.-⚬ C): A Puro.this.-⚬ C
Exported from Puro
def assocLR[A, B, C]: (A Puro.this.|*| B Puro.this.|*| C) Puro.this.-⚬ (A Puro.this.|*| (B Puro.this.|*| C))
Exported from Puro
def assocRL[A, B, C]: (A Puro.this.|*| (B Puro.this.|*| C)) Puro.this.-⚬ (A Puro.this.|*| B Puro.this.|*| C)
Exported from Puro
def awaitChooseL[A, B](using A: Negative[A]): (A PuroLib.this.dsl.|&| B) PuroLib.this.dsl.-⚬ (PuroLib.this.dsl.Need PuroLib.this.dsl.|*| A)
Exported from PuroLib

Chooses the left alternative A of the choice A |&| B, but only after the Need signal from the first out-port arrives. Until then, the producer of A |&| B will see it as undecided. This is different from chooseL[A, B] > awaitNegFst[A], in which the producer of A |&| B knows immediately that the left side is chosen.

Chooses the left alternative A of the choice A |&| B, but only after the Need signal from the first out-port arrives. Until then, the producer of A |&| B will see it as undecided. This is different from chooseL[A, B] > awaitNegFst[A], in which the producer of A |&| B knows immediately that the left side is chosen.

Attributes

def awaitChooseR[A, B](using B: Negative[B]): (A PuroLib.this.dsl.|&| B) PuroLib.this.dsl.-⚬ (PuroLib.this.dsl.Need PuroLib.this.dsl.|*| B)
Exported from PuroLib

Analogous to awaitChooseL, but chooses the right side.

Analogous to awaitChooseL, but chooses the right side.

Attributes

def awaitInjectL[A, B](using A: Positive[A]): (PuroLib.this.dsl.Done PuroLib.this.dsl.|*| A) PuroLib.this.dsl.-⚬ (A PuroLib.this.dsl.|+| B)
Exported from PuroLib

Injects A from the the second in-port to the left side of the |+| in the out-port, but only after the Done signal from the first in-port arrives. That means that the consumer of A |+| B will see it as undecided until the Done signal arrives. This is different from awaitPosFst[A] > injectL[A, B], in which the consumer of A |+| B knows immediately that it is the left case.

Injects A from the the second in-port to the left side of the |+| in the out-port, but only after the Done signal from the first in-port arrives. That means that the consumer of A |+| B will see it as undecided until the Done signal arrives. This is different from awaitPosFst[A] > injectL[A, B], in which the consumer of A |+| B knows immediately that it is the left case.

This is a convenience method on top of injectLWhenDone that which absorbs the Done signal using the given Junction.Positive.

Attributes

def awaitInjectR[A, B](using B: Positive[B]): (PuroLib.this.dsl.Done PuroLib.this.dsl.|*| B) PuroLib.this.dsl.-⚬ (A PuroLib.this.dsl.|+| B)
Exported from PuroLib

Analogous to joinInjectL, but injects to the right.

Analogous to joinInjectL, but injects to the right.

Attributes

def awaitNegFst[A](using A: Negative[A]): A PuroLib.this.dsl.-⚬ (PuroLib.this.dsl.Need PuroLib.this.dsl.|*| A)
Exported from PuroLib
def awaitNegSnd[A](using A: Negative[A]): A PuroLib.this.dsl.-⚬ (A PuroLib.this.dsl.|*| PuroLib.this.dsl.Need)
Exported from PuroLib
def awaitPingFst[A](using A: Positive[A]): (PuroLib.this.dsl.Ping PuroLib.this.dsl.|*| A) PuroLib.this.dsl.-⚬ A
Exported from PuroLib
def awaitPingSnd[A](using A: Positive[A]): (A PuroLib.this.dsl.|*| PuroLib.this.dsl.Ping) PuroLib.this.dsl.-⚬ A
Exported from PuroLib
def awaitPongFst[A](using A: Negative[A]): A PuroLib.this.dsl.-⚬ (PuroLib.this.dsl.Pong PuroLib.this.dsl.|*| A)
Exported from PuroLib
def awaitPongSnd[A](using A: Negative[A]): A PuroLib.this.dsl.-⚬ (A PuroLib.this.dsl.|*| PuroLib.this.dsl.Pong)
Exported from PuroLib
def awaitPosChooseL[A, B](using A: Positive[A]): (PuroLib.this.dsl.Done PuroLib.this.dsl.|*| (A PuroLib.this.dsl.|&| B)) PuroLib.this.dsl.-⚬ A
Exported from PuroLib

Analogous to awaitChooseL, but awaits a positive (i.e. Done) signal.

Analogous to awaitChooseL, but awaits a positive (i.e. Done) signal.

Attributes

def awaitPosChooseR[A, B](using B: Positive[B]): (PuroLib.this.dsl.Done PuroLib.this.dsl.|*| (A PuroLib.this.dsl.|&| B)) PuroLib.this.dsl.-⚬ B
Exported from PuroLib

Analogous to awaitChooseR, but awaits a positive (i.e. Done) signal.

Analogous to awaitChooseR, but awaits a positive (i.e. Done) signal.

Attributes

def awaitPosFst[A](using A: Positive[A]): (PuroLib.this.dsl.Done PuroLib.this.dsl.|*| A) PuroLib.this.dsl.-⚬ A
Exported from PuroLib
def awaitPosSnd[A](using A: Positive[A]): (A PuroLib.this.dsl.|*| PuroLib.this.dsl.Done) PuroLib.this.dsl.-⚬ A
Exported from PuroLib
def backvert[A]: (A Puro.this.|*| Puro.this.-[A]) Puro.this.-⚬ Puro.this.One
Exported from Puro
 ┏━━━━━━━━━━━┓
 ┞────┐      ┃
 ╎  A │┄┄┐   ┃
 ┟────┘  ┆   ┃
 ┃       ┆   ┃
 ┞────┐  ┆   ┃
 ╎-[A]│←┄┘   ┃
 ┟────┘      ┃
 ┗━━━━━━━━━━━┛

Attributes

def blockInportUntilPong[A]: A PuroLib.this.dsl.-⚬ (PuroLib.this.dsl.Pong PuroLib.this.dsl.|*| A)
Exported from PuroLib

Obstructs interaction on the in-port (i.e. from the left) until Pong is received.

Obstructs interaction on the in-port (i.e. from the left) until Pong is received.

Attributes

def blockOutportUntilPing[A]: (PuroLib.this.dsl.Ping PuroLib.this.dsl.|*| A) PuroLib.this.dsl.-⚬ A
Exported from PuroLib

Obstructs interaction on the out-port (i.e. from the right) until Ping is received.

Obstructs interaction on the out-port (i.e. from the right) until Ping is received.

Attributes

def blocking[A, B](f: A => B): Scaletto.this.Val[A] Scaletto.this.-⚬ Scaletto.this.Val[B]
Exported from Scaletto

Executes a potentially blocking operation. The runtime will ensure that the blocking operation does not impede any of the concurrently happening non-blocking computations.

Executes a potentially blocking operation. The runtime will ensure that the blocking operation does not impede any of the concurrently happening non-blocking computations.

Attributes

def choice[A, B, C](caseLeft: A Puro.this.-⚬ B, caseRight: A Puro.this.-⚬ C): A Puro.this.-⚬ (B Puro.this.|&| C)
Exported from Puro
def chooseL[A, B]: (A Puro.this.|&| B) Puro.this.-⚬ A
Exported from Puro
def chooseLOnPing[A, B]: (PuroLib.this.dsl.Ping PuroLib.this.dsl.|*| (A PuroLib.this.dsl.|&| B)) PuroLib.this.dsl.-⚬ A
Exported from PuroLib
def chooseLOnPong[A, B]: (A Puro.this.|&| B) Puro.this.-⚬ (Puro.this.Pong Puro.this.|*| A)
Exported from Puro
def chooseLWhenDone[A, B]: (PuroLib.this.dsl.Done PuroLib.this.dsl.|*| (A PuroLib.this.dsl.|&| B)) PuroLib.this.dsl.-⚬ (PuroLib.this.dsl.Done PuroLib.this.dsl.|*| A)
Exported from PuroLib
def chooseLWhenNeed[A, B]: ((PuroLib.this.dsl.Need PuroLib.this.dsl.|*| A) PuroLib.this.dsl.|&| B) PuroLib.this.dsl.-⚬ (PuroLib.this.dsl.Need PuroLib.this.dsl.|*| A)
Exported from PuroLib
def chooseR[A, B]: (A Puro.this.|&| B) Puro.this.-⚬ B
Exported from Puro
def chooseROnPing[A, B]: (PuroLib.this.dsl.Ping PuroLib.this.dsl.|*| (A PuroLib.this.dsl.|&| B)) PuroLib.this.dsl.-⚬ B
Exported from PuroLib
def chooseROnPong[A, B]: (A Puro.this.|&| B) Puro.this.-⚬ (Puro.this.Pong Puro.this.|*| B)
Exported from Puro
def chooseRWhenDone[A, B]: (PuroLib.this.dsl.Done PuroLib.this.dsl.|*| (A PuroLib.this.dsl.|&| B)) PuroLib.this.dsl.-⚬ (PuroLib.this.dsl.Done PuroLib.this.dsl.|*| B)
Exported from PuroLib
def chooseRWhenNeed[A, B]: (A PuroLib.this.dsl.|&| (PuroLib.this.dsl.Need PuroLib.this.dsl.|*| B)) PuroLib.this.dsl.-⚬ (PuroLib.this.dsl.Need PuroLib.this.dsl.|*| B)
Exported from PuroLib
Exported from ScalettoLib
def coDistributeL[A, B, C]: ((A Puro.this.|*| B) Puro.this.|&| (A Puro.this.|*| C)) Puro.this.-⚬ (A Puro.this.|*| (B Puro.this.|&| C))
Exported from Puro

Inverse of coFactorL.

Inverse of coFactorL.

Attributes

def coDistributeR[A, B, C]: ((A Puro.this.|*| C) Puro.this.|&| (B Puro.this.|*| C)) Puro.this.-⚬ ((A Puro.this.|&| B) Puro.this.|*| C)
Exported from Puro

Inverse of coFactorR.

Inverse of coFactorR.

Attributes

def coFactorL[A, B, C]: (A Puro.this.|*| (B Puro.this.|&| C)) Puro.this.-⚬ ((A Puro.this.|*| B) Puro.this.|&| (A Puro.this.|*| C))
Exported from Puro
def coFactorR[A, B, C]: ((A Puro.this.|&| B) Puro.this.|*| C) Puro.this.-⚬ ((A Puro.this.|*| C) Puro.this.|&| (B Puro.this.|*| C))
Exported from Puro
def combine[A : PuroLib.this.Semigroup]: (A PuroLib.this.dsl.|*| A) PuroLib.this.dsl.-⚬ A
Exported from PuroLib
def const[A](a: A): ScalettoLib.this.dsl.One ScalettoLib.this.dsl.-⚬ ScalettoLib.this.dsl.Val[A]
Exported from ScalettoLib
def constList[A](as: List[A]): ScalettoLib.this.dsl.One ScalettoLib.this.dsl.-⚬ ScalettoLib.this.puroLib.LList[ScalettoLib.this.dsl.Val[A]]
Exported from ScalettoLib
def constList1[A](as: ::[A]): ScalettoLib.this.dsl.Done ScalettoLib.this.dsl.-⚬ ScalettoLib.this.puroLib.LList1[ScalettoLib.this.dsl.Val[A]]
Exported from ScalettoLib
def constList1[A](a: A, as: List[A]): ScalettoLib.this.dsl.Done ScalettoLib.this.dsl.-⚬ ScalettoLib.this.puroLib.LList1[ScalettoLib.this.dsl.Val[A]]
Exported from ScalettoLib
def constList1Of[A](a: A, as: A*): ScalettoLib.this.dsl.Done ScalettoLib.this.dsl.-⚬ ScalettoLib.this.puroLib.LList1[ScalettoLib.this.dsl.Val[A]]
Exported from ScalettoLib
def constListOf[A](as: A*): ScalettoLib.this.dsl.One ScalettoLib.this.dsl.-⚬ ScalettoLib.this.puroLib.LList[ScalettoLib.this.dsl.Val[A]]
Exported from ScalettoLib
def constListOf1[A](a: A, as: A*): ScalettoLib.this.dsl.Done ScalettoLib.this.dsl.-⚬ ScalettoLib.this.puroLib.LList[ScalettoLib.this.dsl.Val[A]]
Exported from ScalettoLib
transparent inline def constNeg[A]: Scaletto.this.Neg[A] Scaletto.this.-⚬ Scaletto.this.Need
Exported from Scaletto
def constNeg[A](a: A): Scaletto.this.Neg[A] Scaletto.this.-⚬ Scaletto.this.Need
Exported from Scaletto
transparent inline def constVal[A]: Scaletto.this.Done Scaletto.this.-⚬ Scaletto.this.Val[A]
Exported from Scaletto
def constVal[A](a: A): Scaletto.this.Done Scaletto.this.-⚬ Scaletto.this.Val[A]
Exported from Scaletto
def contramapNeg[A, B](f: A => B): Scaletto.this.Neg[B] Scaletto.this.-⚬ Scaletto.this.Neg[A]
Exported from Scaletto

Lifts an ordinary Scala function to a linear function on demands, in opposite direction.

Lifts an ordinary Scala function to a linear function on demands, in opposite direction.

Attributes

def contrapositive[A, B](f: A Puro.this.-⚬ B): Puro.this.-[B] Puro.this.-⚬ Puro.this.-[A]
Exported from Puro
def crashNow[A, B](msg: String): A CrashDSL.this.-⚬ B
Exported from CrashDSL
def crashWhenDone[A, B](msg: String): (CrashDSL.this.Done CrashDSL.this.|*| A) CrashDSL.this.-⚬ B
Exported from CrashDSL

Starts propagating an error downstream (which might be through both the in-port and the out-port).

Starts propagating an error downstream (which might be through both the in-port and the out-port).

Use only for irrecoverable errors. Recoverable errors should be expressed in function signature and handled appropriately.

Done on the in-port is the trigger to crash. A on the in-port allows to consume any unhandled resources. B on the out-port allows to fulfill any obligation to produce resources.

Attributes

def crashWhenNeed[A, B](msg: String): A CrashDSL.this.-⚬ (CrashDSL.this.Need CrashDSL.this.|*| B)
Exported from CrashDSL
def curry[A, B, C](f: (A Puro.this.|*| B) Puro.this.-⚬ C): A Puro.this.-⚬ (B Puro.this.=⚬ C)
Exported from Puro
def decrement: ScalettoLib.this.dsl.Val[Int] ScalettoLib.this.dsl.-⚬ (ScalettoLib.this.dsl.Done ScalettoLib.this.dsl.|+| ScalettoLib.this.dsl.Val[Int])
Exported from ScalettoLib
def defer[A](using A: Positive[A]): A PuroLib.this.dsl.-⚬ PuroLib.this.Deferred[A]
Exported from PuroLib
def delay: Scaletto.this.Val[FiniteDuration] Scaletto.this.-⚬ Scaletto.this.Done
Exported from Scaletto
def delayChoiceAndSidesUntilDone[A, B](using A: Positive[A], B: Positive[B]): (PuroLib.this.dsl.Done PuroLib.this.dsl.|*| (A PuroLib.this.dsl.|&| B)) PuroLib.this.dsl.-⚬ (A PuroLib.this.dsl.|&| B)
Exported from PuroLib
def delayChoiceAndSidesUntilNeed[A, B](using A: Negative[A], B: Negative[B]): (A PuroLib.this.dsl.|&| B) PuroLib.this.dsl.-⚬ (PuroLib.this.dsl.Need PuroLib.this.dsl.|*| (A PuroLib.this.dsl.|&| B))
Exported from PuroLib
def delayChoiceUntilDone[A, B]: (PuroLib.this.dsl.Done PuroLib.this.dsl.|*| (A PuroLib.this.dsl.|&| B)) PuroLib.this.dsl.-⚬ ((PuroLib.this.dsl.Done PuroLib.this.dsl.|*| A) PuroLib.this.dsl.|&| (PuroLib.this.dsl.Done PuroLib.this.dsl.|*| B))
Exported from PuroLib
def delayChoiceUntilNeed[A, B]: ((PuroLib.this.dsl.Need PuroLib.this.dsl.|*| A) PuroLib.this.dsl.|&| (PuroLib.this.dsl.Need PuroLib.this.dsl.|*| B)) PuroLib.this.dsl.-⚬ (PuroLib.this.dsl.Need PuroLib.this.dsl.|*| (A PuroLib.this.dsl.|&| B))
Exported from PuroLib
def delayChoiceUntilPing[A, B]: (PuroLib.this.dsl.Ping PuroLib.this.dsl.|*| (A PuroLib.this.dsl.|&| B)) PuroLib.this.dsl.-⚬ (A PuroLib.this.dsl.|&| B)
Exported from PuroLib
def delayChoiceUntilPong[A, B]: (A PuroLib.this.dsl.|&| B) PuroLib.this.dsl.-⚬ (PuroLib.this.dsl.Pong PuroLib.this.dsl.|*| (A PuroLib.this.dsl.|&| B))
Exported from PuroLib
def delayEitherAndSidesUntilDone[A, B](using A: Positive[A], B: Positive[B]): (PuroLib.this.dsl.Done PuroLib.this.dsl.|*| (A PuroLib.this.dsl.|+| B)) PuroLib.this.dsl.-⚬ (A PuroLib.this.dsl.|+| B)
Exported from PuroLib
def delayEitherAndSidesUntilNeed[A, B](using A: Negative[A], B: Negative[B]): (A PuroLib.this.dsl.|+| B) PuroLib.this.dsl.-⚬ (PuroLib.this.dsl.Need PuroLib.this.dsl.|*| (A PuroLib.this.dsl.|+| B))
Exported from PuroLib
def delayEitherUntilDone[A, B]: (PuroLib.this.dsl.Done PuroLib.this.dsl.|*| (A PuroLib.this.dsl.|+| B)) PuroLib.this.dsl.-⚬ ((PuroLib.this.dsl.Done PuroLib.this.dsl.|*| A) PuroLib.this.dsl.|+| (PuroLib.this.dsl.Done PuroLib.this.dsl.|*| B))
Exported from PuroLib
def delayEitherUntilNeed[A, B]: ((PuroLib.this.dsl.Need PuroLib.this.dsl.|*| A) PuroLib.this.dsl.|+| (PuroLib.this.dsl.Need PuroLib.this.dsl.|*| B)) PuroLib.this.dsl.-⚬ (PuroLib.this.dsl.Need PuroLib.this.dsl.|*| (A PuroLib.this.dsl.|+| B))
Exported from PuroLib
def delayEitherUntilPing[A, B]: (PuroLib.this.dsl.Ping PuroLib.this.dsl.|*| (A PuroLib.this.dsl.|+| B)) PuroLib.this.dsl.-⚬ (A PuroLib.this.dsl.|+| B)
Exported from PuroLib
def delayEitherUntilPong[A, B]: (A PuroLib.this.dsl.|+| B) PuroLib.this.dsl.-⚬ (PuroLib.this.dsl.Pong PuroLib.this.dsl.|*| (A PuroLib.this.dsl.|+| B))
Exported from PuroLib
Exported from Puro
def delayNeed: Scaletto.this.Need Scaletto.this.-⚬ Scaletto.this.Neg[FiniteDuration]
Exported from Scaletto
def delayVal[A](by: FiniteDuration): ScalettoLib.this.dsl.Val[A] ScalettoLib.this.dsl.-⚬ ScalettoLib.this.dsl.Val[A]
Exported from ScalettoLib
def delayVal[A](by: ScalettoLib.this.dsl.Done ScalettoLib.this.dsl.-⚬ ScalettoLib.this.dsl.Done): ScalettoLib.this.dsl.Val[A] ScalettoLib.this.dsl.-⚬ ScalettoLib.this.dsl.Val[A]
Exported from ScalettoLib
def delayValRandomMs[A](minMs: Int, maxMs: Int): ScalettoLib.this.dsl.Val[A] ScalettoLib.this.dsl.-⚬ ScalettoLib.this.dsl.Val[A]
Exported from ScalettoLib
def demand[A]: Puro.this.One Puro.this.-⚬ (Puro.this.-[A] Puro.this.|*| A)
Exported from Puro

Creates a demand on the first out-port, channeling the provided resource to the second out-port. Alias for forevert.

Creates a demand on the first out-port, channeling the provided resource to the second out-port. Alias for forevert.

Attributes

def demandChoice[A, B]: (Puro.this.-[A] Puro.this.|+| Puro.this.-[B]) Puro.this.-⚬ Puro.this.-[A Puro.this.|&| B]
Exported from Puro

Converts an obligation to handle either demand to an obligation to supply a choice. Alias for factorInversionOutOf_|+|.

Converts an obligation to handle either demand to an obligation to supply a choice. Alias for factorInversionOutOf_|+|.

Attributes

def demandChosen[A, B]: Puro.this.-[A Puro.this.|&| B] Puro.this.-⚬ (Puro.this.-[A] Puro.this.|+| Puro.this.-[B])
Exported from Puro

Converts a demand for choice to a demand of the chosen side. Alias for distributeInversionInto_|&amp;|.

Converts a demand for choice to a demand of the chosen side. Alias for distributeInversionInto_|&amp;|.

Attributes

def demandEither[A, B]: (Puro.this.-[A] Puro.this.|&| Puro.this.-[B]) Puro.this.-⚬ Puro.this.-[A Puro.this.|+| B]
Exported from Puro

Converts choice of demands to demand of either. Alias for factorInversionOutOf_|&amp;|.

Converts choice of demands to demand of either. Alias for factorInversionOutOf_|&amp;|.

Attributes

def demandSeparately[A, B]: Puro.this.-[A Puro.this.|*| B] Puro.this.-⚬ (Puro.this.-[A] Puro.this.|*| Puro.this.-[B])
Exported from Puro

Attributes

def demandTogether[A, B]: (Puro.this.-[A] Puro.this.|*| Puro.this.-[B]) Puro.this.-⚬ Puro.this.-[A Puro.this.|*| B]
Exported from Puro

Alias for factorOutInversion.

Alias for factorOutInversion.

Attributes

def detain[A](using A: Positive[A]): A PuroLib.this.dsl.-⚬ PuroLib.this.Detained[A]
Exported from PuroLib
def die[A]: Puro.this.-[Puro.this.-[A]] Puro.this.-⚬ A
Exported from Puro

Double-inversion elimination.

Double-inversion elimination.

Attributes

def dii[A]: A Puro.this.-⚬ Puro.this.-[Puro.this.-[A]]
Exported from Puro

Double-inversion introduction.

Double-inversion introduction.

Attributes

def discardFst[A, B](using A: PuroLib.this.dsl.Comonoid[A]): (A PuroLib.this.dsl.|*| B) PuroLib.this.dsl.-⚬ B
Exported from PuroLib
def discardSnd[A, B](using B: PuroLib.this.dsl.Comonoid[B]): (A PuroLib.this.dsl.|*| B) PuroLib.this.dsl.-⚬ A
Exported from PuroLib
def dismissPing: Puro.this.Ping Puro.this.-⚬ Puro.this.One
Exported from Puro
def dismissPong: Puro.this.One Puro.this.-⚬ Puro.this.Pong
Exported from Puro
def distributeInversion[A, B]: Puro.this.-[A Puro.this.|*| B] Puro.this.-⚬ (Puro.this.-[A] Puro.this.|*| Puro.this.-[B])
Exported from Puro
 ┏━━━━━━━━━━━┓
 ┃           ┞────┐
 ┞────┐      ╎-[A]│
 ╎ ⎡A⎤│      ┟────┘
 ╎-⎢⊗⎥│      ┃
 ╎ ⎣B⎦│      ┞────┐
 ┟────┘      ╎-[B]│
 ┃           ┟────┘
 ┗━━━━━━━━━━━┛

Attributes

def distributeInversionInto_|&|[A, B]: Puro.this.-[A Puro.this.|&| B] Puro.this.-⚬ (Puro.this.-[A] Puro.this.|+| Puro.this.-[B])
Exported from Puro
def distributeInversionInto_|+|[A, B]: Puro.this.-[A Puro.this.|+| B] Puro.this.-⚬ (Puro.this.-[A] Puro.this.|&| Puro.this.-[B])
Exported from Puro
def distributeL[A, B, C]: (A Puro.this.|*| (B Puro.this.|+| C)) Puro.this.-⚬ ((A Puro.this.|*| B) Puro.this.|+| (A Puro.this.|*| C))
Exported from Puro

Distribute the factor on the left into the summands on the right. Inverse of factorL.

Distribute the factor on the left into the summands on the right. Inverse of factorL.

Attributes

def distributeR[A, B, C]: ((A Puro.this.|+| B) Puro.this.|*| C) Puro.this.-⚬ ((A Puro.this.|*| C) Puro.this.|+| (B Puro.this.|*| C))
Exported from Puro

Distribute the factor on the right into the summands on the left. Inverse of factorR.

Distribute the factor on the right into the summands on the left. Inverse of factorR.

Attributes

def done: Puro.this.One Puro.this.-⚬ Puro.this.Done
Exported from Puro
def doneAsInvertedNeed: Puro.this.Done Puro.this.-⚬ Puro.this.-[Puro.this.Need]
Exported from Puro
def doubleDemandElimination[A]: Puro.this.-[Puro.this.-[A]] Puro.this.-⚬ A
Exported from Puro

Alias for die.

Alias for die.

Attributes

def doubleDemandIntroduction[A]: A Puro.this.-⚬ Puro.this.-[Puro.this.-[A]]
Exported from Puro

Alias for dii.

Alias for dii.

Attributes

def dualRec[F[_], G[_]](ev: PuroLib.this.Dual1[F, G]): PuroLib.this.Dual[PuroLib.this.dsl.Rec[F], PuroLib.this.dsl.Rec[G]]
Exported from PuroLib

If F[A] is dual to G[B] for all dual pairs A, B, then Rec[F] is dual to Rec[G].

If F[A] is dual to G[B] for all dual pairs A, B, then Rec[F] is dual to Rec[G].

Attributes

def dualSymmetric[A, B](ev: PuroLib.this.Dual[A, B]): PuroLib.this.Dual[B, A]
Exported from PuroLib
def dup[A]: Scaletto.this.Val[A] Scaletto.this.-⚬ (Scaletto.this.Val[A] Scaletto.this.|*| Scaletto.this.Val[A])
Exported from Scaletto
def dupNeg[A]: (Scaletto.this.Neg[A] Scaletto.this.|*| Scaletto.this.Neg[A]) Scaletto.this.-⚬ Scaletto.this.Neg[A]
Exported from Scaletto
def effect[R, A, B](f: (R, A) => B): (Scaletto.this.Res[R] Scaletto.this.|*| Scaletto.this.Val[A]) Scaletto.this.-⚬ (Scaletto.this.Res[R] Scaletto.this.|*| Scaletto.this.Val[B])
Exported from Scaletto

Performs a (potentially) effectful operation on a resource, producing some output.

Performs a (potentially) effectful operation on a resource, producing some output.

Type parameters

A

additional parameter of the operation

B

additional output of the operation

R

type of the resource

Value parameters

f

the effectful operation

Attributes

def effect[R, A, B](f: Scaletto.this.ScalaFun[(R, A), B]): (Scaletto.this.Res[R] Scaletto.this.|*| Scaletto.this.Val[A]) Scaletto.this.-⚬ (Scaletto.this.Res[R] Scaletto.this.|*| Scaletto.this.Val[B])
Exported from Scaletto
def effect0[R](f: R => Unit): ScalettoLib.this.dsl.Res[R] ScalettoLib.this.dsl.-⚬ ScalettoLib.this.dsl.Res[R]
Exported from ScalettoLib

Variant of effect that does not take additional input and does not produce additional output.

Variant of effect that does not take additional input and does not produce additional output.

Attributes

def effectAsync[R, A, B](f: (R, A) => Async[B]): (Scaletto.this.Res[R] Scaletto.this.|*| Scaletto.this.Val[A]) Scaletto.this.-⚬ (Scaletto.this.Res[R] Scaletto.this.|*| Scaletto.this.Val[B])
Exported from Scaletto
def effectAsync0[R](f: R => Async[Unit]): ScalettoLib.this.dsl.Res[R] ScalettoLib.this.dsl.-⚬ ScalettoLib.this.dsl.Res[R]
Exported from ScalettoLib

Variant of effectAsync that does not take additional input and does not produce additional output.

Variant of effectAsync that does not take additional input and does not produce additional output.

Attributes

def effectRd[R, B](f: R => B): ScalettoLib.this.dsl.Res[R] ScalettoLib.this.dsl.-⚬ (ScalettoLib.this.dsl.Res[R] ScalettoLib.this.dsl.|*| ScalettoLib.this.dsl.Val[B])
Exported from ScalettoLib
def effectRd[R, B](f: ScalettoLib.this.dsl.ScalaFun[R, B]): ScalettoLib.this.dsl.Res[R] ScalettoLib.this.dsl.-⚬ (ScalettoLib.this.dsl.Res[R] ScalettoLib.this.dsl.|*| ScalettoLib.this.dsl.Val[B])
Exported from ScalettoLib
def effectWr[R, A](f: (R, A) => Unit): (Scaletto.this.Res[R] Scaletto.this.|*| Scaletto.this.Val[A]) Scaletto.this.-⚬ Scaletto.this.Res[R]
Exported from Scaletto

Variant of effect that does not produce output in addition to performing the effect. Can be viewed as ''wr''iting an A into the resource.

Variant of effect that does not produce output in addition to performing the effect. Can be viewed as ''wr''iting an A into the resource.

Attributes

def effectWr[R, A](f: Scaletto.this.ScalaFun[(R, A), Unit]): (Scaletto.this.Res[R] Scaletto.this.|*| Scaletto.this.Val[A]) Scaletto.this.-⚬ Scaletto.this.Res[R]
Exported from Scaletto
def effectWrAsync[R, A](f: (R, A) => Async[Unit]): (Scaletto.this.Res[R] Scaletto.this.|*| Scaletto.this.Val[A]) Scaletto.this.-⚬ Scaletto.this.Res[R]
Exported from Scaletto
def either[A, B, C](caseLeft: A Puro.this.-⚬ C, caseRight: B Puro.this.-⚬ C): (A Puro.this.|+| B) Puro.this.-⚬ C
Exported from Puro
def elimFst[A, B](f: A Puro.this.-⚬ Puro.this.One): (A Puro.this.|*| B) Puro.this.-⚬ B
Exported from Puro
def elimFst[B]: (Puro.this.One Puro.this.|*| B) Puro.this.-⚬ B
Exported from Puro
def elimSnd[A, B](f: B Puro.this.-⚬ Puro.this.One): (A Puro.this.|*| B) Puro.this.-⚬ A
Exported from Puro
def elimSnd[A]: (A Puro.this.|*| Puro.this.One) Puro.this.-⚬ A
Exported from Puro
def eval[A, B]: ((A Puro.this.=⚬ B) Puro.this.|*| A) Puro.this.-⚬ B
Exported from Puro
def factorInversionOutOf_|&|[A, B]: (Puro.this.-[A] Puro.this.|&| Puro.this.-[B]) Puro.this.-⚬ Puro.this.-[A Puro.this.|+| B]
Exported from Puro
def factorInversionOutOf_|+|[A, B]: (Puro.this.-[A] Puro.this.|+| Puro.this.-[B]) Puro.this.-⚬ Puro.this.-[A Puro.this.|&| B]
Exported from Puro
def factorL[A, B, C]: ((A Puro.this.|*| B) Puro.this.|+| (A Puro.this.|*| C)) Puro.this.-⚬ (A Puro.this.|*| (B Puro.this.|+| C))
Exported from Puro

Factor out the factor A on the left of both summands.

Factor out the factor A on the left of both summands.

Attributes

def factorOutInversion[A, B]: (Puro.this.-[A] Puro.this.|*| Puro.this.-[B]) Puro.this.-⚬ Puro.this.-[A Puro.this.|*| B]
Exported from Puro
 ┏━━━━━━━━━━━┓
 ┞────┐      ┃
 ╎-[A]│      ┞────┐
 ┟────┘      ╎ ⎡A⎤│
 ┃           ╎-⎢⊗⎥│
 ┞────┐      ╎ ⎣B⎦│
 ╎-[B]│      ┟────┘
 ┟────┘      ┃
 ┗━━━━━━━━━━━┛

Attributes

def factorR[A, B, C]: ((A Puro.this.|*| C) Puro.this.|+| (B Puro.this.|*| C)) Puro.this.-⚬ ((A Puro.this.|+| B) Puro.this.|*| C)
Exported from Puro

Factor out the factor C on the right of both summands.

Factor out the factor C on the right of both summands.

Attributes

def forevert[A]: Puro.this.One Puro.this.-⚬ (Puro.this.-[A] Puro.this.|*| A)
Exported from Puro
 ┏━━━━━━┓
 ┃      ┞────┐
 ┃   ┌┄┄╎-[A]│
 ┃   ┆  ┟────┘
 ┃   ┆  ┃
 ┃   ┆  ┞────┐
 ┃   └┄→╎  A │
 ┃      ┟────┘
 ┗━━━━━━┛

Attributes

def fork: Puro.this.Done Puro.this.-⚬ (Puro.this.Done Puro.this.|*| Puro.this.Done)
Exported from Puro
def forkMap[A, B](f: Puro.this.Done Puro.this.-⚬ A, g: Puro.this.Done Puro.this.-⚬ B): Puro.this.Done Puro.this.-⚬ (A Puro.this.|*| B)
Exported from Puro
def forkMapNeed[A, B](f: A Puro.this.-⚬ Puro.this.Need, g: B Puro.this.-⚬ Puro.this.Need): (A Puro.this.|*| B) Puro.this.-⚬ Puro.this.Need
Exported from Puro
def forkNeed: (Puro.this.Need Puro.this.|*| Puro.this.Need) Puro.this.-⚬ Puro.this.Need
Exported from Puro
def forkPing: Puro.this.Ping Puro.this.-⚬ (Puro.this.Ping Puro.this.|*| Puro.this.Ping)
Exported from Puro
def forkPong: (Puro.this.Pong Puro.this.|*| Puro.this.Pong) Puro.this.-⚬ Puro.this.Pong
Exported from Puro
def fst[A, B, C](f: A Puro.this.-⚬ B): (A Puro.this.|*| C) Puro.this.-⚬ (B Puro.this.|*| C)
Exported from Puro
def fulfill[A]: (Scaletto.this.Val[A] Scaletto.this.|*| Scaletto.this.Neg[A]) Scaletto.this.-⚬ Scaletto.this.One
Exported from Scaletto

Uses the value (eventually) produced by Val to satisfy the demand of Neg.

Uses the value (eventually) produced by Val to satisfy the demand of Neg.

Attributes

def fun[A, B]: Puro.this.Sub[A, B] Puro.this.-⚬ (A Puro.this.=⚬ B)
Exported from Puro
def getFst[A, B](using A: PuroLib.this.dsl.Cosemigroup[A]): (A PuroLib.this.dsl.|*| B) PuroLib.this.dsl.-⚬ (A PuroLib.this.dsl.|*| (A PuroLib.this.dsl.|*| B))
Exported from PuroLib
def getSnd[A, B](using B: PuroLib.this.dsl.Cosemigroup[B]): (A PuroLib.this.dsl.|*| B) PuroLib.this.dsl.-⚬ (B PuroLib.this.dsl.|*| (A PuroLib.this.dsl.|*| B))
Exported from PuroLib
export given_Comparable_Val_Val[A : Ordering]
Exported from ScalettoLib
export given_NMonoid_Neg[A]
Exported from ScalettoLib
def id[A]: A Puro.this.-⚬ A
Exported from Puro
def inflate[A]: Scaletto.this.Need Scaletto.this.-⚬ Scaletto.this.Neg[A]
Exported from Scaletto
def injectL[A, B]: A Puro.this.-⚬ (A Puro.this.|+| B)
Exported from Puro
def injectLOnPing[A, B]: (Puro.this.Ping Puro.this.|*| A) Puro.this.-⚬ (A Puro.this.|+| B)
Exported from Puro
def injectLOnPong[A, B]: A PuroLib.this.dsl.-⚬ (PuroLib.this.dsl.Pong PuroLib.this.dsl.|*| (A PuroLib.this.dsl.|+| B))
Exported from PuroLib
def injectLWhenDone[A, B]: (PuroLib.this.dsl.Done PuroLib.this.dsl.|*| A) PuroLib.this.dsl.-⚬ ((PuroLib.this.dsl.Done PuroLib.this.dsl.|*| A) PuroLib.this.dsl.|+| B)
Exported from PuroLib
def injectLWhenNeed[A, B]: (PuroLib.this.dsl.Need PuroLib.this.dsl.|*| A) PuroLib.this.dsl.-⚬ (PuroLib.this.dsl.Need PuroLib.this.dsl.|*| (A PuroLib.this.dsl.|+| B))
Exported from PuroLib
def injectR[A, B]: B Puro.this.-⚬ (A Puro.this.|+| B)
Exported from Puro
def injectROnPing[A, B]: (Puro.this.Ping Puro.this.|*| B) Puro.this.-⚬ (A Puro.this.|+| B)
Exported from Puro
def injectROnPong[A, B]: B PuroLib.this.dsl.-⚬ (PuroLib.this.dsl.Pong PuroLib.this.dsl.|*| (A PuroLib.this.dsl.|+| B))
Exported from PuroLib
def injectRWhenDone[A, B]: (PuroLib.this.dsl.Done PuroLib.this.dsl.|*| B) PuroLib.this.dsl.-⚬ (A PuroLib.this.dsl.|+| (PuroLib.this.dsl.Done PuroLib.this.dsl.|*| B))
Exported from PuroLib
def injectRWhenNeed[A, B]: (PuroLib.this.dsl.Need PuroLib.this.dsl.|*| B) PuroLib.this.dsl.-⚬ (PuroLib.this.dsl.Need PuroLib.this.dsl.|*| (A PuroLib.this.dsl.|+| B))
Exported from PuroLib
def input[C]: PuroLib.this.ContraFunctor[PuroLib.this.dsl.=⚬]
Exported from PuroLib

Function object (internal hom) is contravariant in the input type.

Function object (internal hom) is contravariant in the input type.

Attributes

def introFst[A, X](f: Puro.this.One Puro.this.-⚬ X): A Puro.this.-⚬ (X Puro.this.|*| A)
Exported from Puro
def introFst[B]: B Puro.this.-⚬ (Puro.this.One Puro.this.|*| B)
Exported from Puro
def introSnd[A, X](f: Puro.this.One Puro.this.-⚬ X): A Puro.this.-⚬ (A Puro.this.|*| X)
Exported from Puro
def introSnd[A]: A Puro.this.-⚬ (A Puro.this.|*| Puro.this.One)
Exported from Puro
def inversionDuality[A]: PuroLib.this.Dual[A, PuroLib.this.dsl.-[A]]
Exported from PuroLib
def invertClosure[A, B]: Puro.this.-[A Puro.this.=⚬ B] Puro.this.-⚬ (B Puro.this.=⚬ A)
Exported from Puro
def invertOne: Puro.this.One Puro.this.-⚬ Puro.this.-[Puro.this.One]
Exported from Puro
def invertedDoneAsNeed: Puro.this.-[Puro.this.Done] Puro.this.-⚬ Puro.this.Need
Exported from Puro
def invertedNeedAsDone: Puro.this.-[Puro.this.Need] Puro.this.-⚬ Puro.this.Done
Exported from Puro
def invertedPingAsPong: Puro.this.-[Puro.this.Ping] Puro.this.-⚬ Puro.this.Pong
Exported from Puro
def invertedPongAsPing: Puro.this.-[Puro.this.Pong] Puro.this.-⚬ Puro.this.Ping
Exported from Puro
def invoke[A, B]: (Puro.this.Sub[A, B] Puro.this.|*| A) Puro.this.-⚬ B
Exported from Puro

An invocation of a subroutine.

An invocation of a subroutine.

Attributes

def isEq[A](using ord: Ordering[A]): (ScalettoLib.this.dsl.Val[A] ScalettoLib.this.dsl.|*| ScalettoLib.this.dsl.Val[A]) ScalettoLib.this.dsl.-⚬ ScalettoLib.this.puroLib.Bool
Exported from ScalettoLib
def isGt[A](using ord: Ordering[A]): (ScalettoLib.this.dsl.Val[A] ScalettoLib.this.dsl.|*| ScalettoLib.this.dsl.Val[A]) ScalettoLib.this.dsl.-⚬ ScalettoLib.this.puroLib.Bool
Exported from ScalettoLib
def isGteq[A](using ord: Ordering[A]): (ScalettoLib.this.dsl.Val[A] ScalettoLib.this.dsl.|*| ScalettoLib.this.dsl.Val[A]) ScalettoLib.this.dsl.-⚬ ScalettoLib.this.puroLib.Bool
Exported from ScalettoLib
def isLt[A](using ord: Ordering[A]): (ScalettoLib.this.dsl.Val[A] ScalettoLib.this.dsl.|*| ScalettoLib.this.dsl.Val[A]) ScalettoLib.this.dsl.-⚬ ScalettoLib.this.puroLib.Bool
Exported from ScalettoLib
def isLteq[A](using ord: Ordering[A]): (ScalettoLib.this.dsl.Val[A] ScalettoLib.this.dsl.|*| ScalettoLib.this.dsl.Val[A]) ScalettoLib.this.dsl.-⚬ ScalettoLib.this.puroLib.Bool
Exported from ScalettoLib
def join: (Puro.this.Done Puro.this.|*| Puro.this.Done) Puro.this.-⚬ Puro.this.Done
Exported from Puro
def joinLTermini: Puro.this.LTerminus Puro.this.-⚬ (Puro.this.LTerminus Puro.this.|*| Puro.this.LTerminus)
Exported from Puro
def joinMap[A, B](f: A Puro.this.-⚬ Puro.this.Done, g: B Puro.this.-⚬ Puro.this.Done): (A Puro.this.|*| B) Puro.this.-⚬ Puro.this.Done
Exported from Puro
def joinMapNeed[A, B](f: Puro.this.Need Puro.this.-⚬ A, g: Puro.this.Need Puro.this.-⚬ B): Puro.this.Need Puro.this.-⚬ (A Puro.this.|*| B)
Exported from Puro
def joinNeed: Puro.this.Need Puro.this.-⚬ (Puro.this.Need Puro.this.|*| Puro.this.Need)
Exported from Puro
def joinPing: (Puro.this.Ping Puro.this.|*| Puro.this.Ping) Puro.this.-⚬ Puro.this.Ping
Exported from Puro
def joinPong: Puro.this.Pong Puro.this.-⚬ (Puro.this.Pong Puro.this.|*| Puro.this.Pong)
Exported from Puro
def joinRTermini: (Puro.this.RTerminus Puro.this.|*| Puro.this.RTerminus) Puro.this.-⚬ Puro.this.RTerminus
Exported from Puro
export junctionNeg[A]
Exported from ScalettoLib
export junctionVal[A]
Exported from ScalettoLib
def lInvert[A, B](using ev: PuroLib.this.Dual[A, B]): PuroLib.this.dsl.One PuroLib.this.dsl.-⚬ (B PuroLib.this.dsl.|*| A)
Exported from PuroLib
def lInvertChoice[A, B, Ȧ, ](lInvertA: PuroLib.this.dsl.One PuroLib.this.dsl.-⚬ (Ȧ PuroLib.this.dsl.|*| A), lInvertB: PuroLib.this.dsl.One PuroLib.this.dsl.-⚬ ( PuroLib.this.dsl.|*| B)): PuroLib.this.dsl.One PuroLib.this.dsl.-⚬ ((Ȧ PuroLib.this.dsl.|&| ) PuroLib.this.dsl.|*| (A PuroLib.this.dsl.|+| B))
Exported from PuroLib
def lInvertPair[A, B, Ȧ, ](lInvertA: PuroLib.this.dsl.One PuroLib.this.dsl.-⚬ (Ȧ PuroLib.this.dsl.|*| A), lInvertB: PuroLib.this.dsl.One PuroLib.this.dsl.-⚬ ( PuroLib.this.dsl.|*| B)): PuroLib.this.dsl.One PuroLib.this.dsl.-⚬ (Ȧ PuroLib.this.dsl.|*| PuroLib.this.dsl.|*| (A PuroLib.this.dsl.|*| B))
Exported from PuroLib
def lInvertPongPing: Puro.this.One Puro.this.-⚬ (Puro.this.Pong Puro.this.|*| Puro.this.Ping)
Exported from Puro
def lInvertRec[F[_], G[_]](lInvertSub: [x, y] => (PuroLib.this.dsl.One PuroLib.this.dsl.-⚬ (x PuroLib.this.dsl.|*| y)) => PuroLib.this.dsl.One PuroLib.this.dsl.-⚬ (F[x] PuroLib.this.dsl.|*| G[y])): PuroLib.this.dsl.One PuroLib.this.dsl.-⚬ (PuroLib.this.dsl.Rec[F] PuroLib.this.dsl.|*| PuroLib.this.dsl.Rec[G])
Exported from PuroLib
def lInvertSignal: Puro.this.One Puro.this.-⚬ (Puro.this.Need Puro.this.|*| Puro.this.Done)
Exported from Puro

Reverses the Need signal (flowing in the negative direciton, i.e. against the -⚬ arrow) into a Done signal (flowing in the positive direction, i.e. along the -⚬ arrow).

Reverses the Need signal (flowing in the negative direciton, i.e. against the -⚬ arrow) into a Done signal (flowing in the positive direction, i.e. along the -⚬ arrow).

 ┏━━━━━━┓
 ┃      ┞────┐
 ┃   ┌┄┄╎Need│
 ┃   ┆  ┟────┘
 ┃   ┆  ┃
 ┃   ┆  ┞────┐
 ┃   └┄→╎Done│
 ┃      ┟────┘
 ┗━━━━━━┛

Attributes

def lInvertTerminus: Puro.this.One Puro.this.-⚬ (Puro.this.LTerminus Puro.this.|*| Puro.this.RTerminus)
Exported from Puro
def latestValue[A]: (ScalettoLib.this.dsl.Val[A] ScalettoLib.this.dsl.|*| ScalettoLib.this.puroLib.LList[ScalettoLib.this.dsl.Val[A]]) ScalettoLib.this.dsl.-⚬ (ScalettoLib.this.puroLib.Endless[ScalettoLib.this.dsl.Val[A]] ScalettoLib.this.dsl.|*| ScalettoLib.this.dsl.Done)
Exported from ScalettoLib
def liftBipredicate[A, B](p: (A, B) => Boolean): (ScalettoLib.this.dsl.Val[A] ScalettoLib.this.dsl.|*| ScalettoLib.this.dsl.Val[B]) ScalettoLib.this.dsl.-⚬ ScalettoLib.this.puroLib.Bool
Exported from ScalettoLib
def liftBoolean: ScalettoLib.this.dsl.Val[Boolean] ScalettoLib.this.dsl.-⚬ ScalettoLib.this.puroLib.Bool
Exported from ScalettoLib
def liftEither[A, B]: Scaletto.this.Val[Either[A, B]] Scaletto.this.-⚬ (Scaletto.this.Val[A] Scaletto.this.|+| Scaletto.this.Val[B])
Exported from Scaletto
def liftNegPair[A, B]: Scaletto.this.Neg[(A, B)] Scaletto.this.-⚬ (Scaletto.this.Neg[A] Scaletto.this.|*| Scaletto.this.Neg[B])
Exported from Scaletto
def liftPair[A, B]: Scaletto.this.Val[(A, B)] Scaletto.this.-⚬ (Scaletto.this.Val[A] Scaletto.this.|*| Scaletto.this.Val[B])
Exported from Scaletto
def liftScalaList1[A]: ScalettoLib.this.dsl.Val[::[A]] ScalettoLib.this.dsl.-⚬ ScalettoLib.this.puroLib.LList1[ScalettoLib.this.dsl.Val[A]]
Exported from ScalettoLib
def listEndlessDuality[A, Ā](ev: PuroLib.this.Dual[A, Ā]): PuroLib.this.Dual[PuroLib.this.LList[A], PuroLib.this.Endless[Ā]]
Exported from PuroLib
def mVal[A, R](init: A => R): ScalettoLib.this.dsl.Val[A] ScalettoLib.this.dsl.-⚬ ScalettoLib.this.dsl.Res[R]
Exported from ScalettoLib

Create a resource that is just a (potentially) mutable value which does not need any cleanup.

Create a resource that is just a (potentially) mutable value which does not need any cleanup.

Value parameters

init

function that initializes the (potentially) mutable value from an immutable one.

Attributes

def mapVal[A, B](f: A => B): Scaletto.this.Val[A] Scaletto.this.-⚬ Scaletto.this.Val[B]
Exported from Scaletto

Lifts an ordinary Scala function to a linear function on Vals.

Lifts an ordinary Scala function to a linear function on Vals.

Attributes

def mapVal[A, B](f: Scaletto.this.ScalaFun[A, B]): Scaletto.this.Val[A] Scaletto.this.-⚬ Scaletto.this.Val[B]
Exported from Scaletto
def matchingChoiceLR[A, B, C, D]: ((A PuroLib.this.dsl.|+| B) PuroLib.this.dsl.|*| (C PuroLib.this.dsl.|&| D)) PuroLib.this.dsl.-⚬ ((A PuroLib.this.dsl.|*| C) PuroLib.this.dsl.|+| (B PuroLib.this.dsl.|*| D))
Exported from PuroLib

From the choice ''available'' on the right (C |&| D), choose the one corresponding to the choice ''made'' on the left (A |+| B): if on the left there is A, choose C, if on the left thre is B, choose D.

From the choice ''available'' on the right (C |&| D), choose the one corresponding to the choice ''made'' on the left (A |+| B): if on the left there is A, choose C, if on the left thre is B, choose D.

Attributes

def matchingChoiceRL[A, B, C, D]: ((A PuroLib.this.dsl.|&| B) PuroLib.this.dsl.|*| (C PuroLib.this.dsl.|+| D)) PuroLib.this.dsl.-⚬ ((A PuroLib.this.dsl.|*| C) PuroLib.this.dsl.|+| (B PuroLib.this.dsl.|*| D))
Exported from PuroLib

From the choice ''available'' on the left (A |&| B), choose the one corresponding to the choice ''made'' on the right (C |+| D): if on the right there is C, choose A, if on the right there is D, choose B.

From the choice ''available'' on the left (A |&| B), choose the one corresponding to the choice ''made'' on the right (C |+| D): if on the right there is C, choose A, if on the right there is D, choose B.

Attributes

def maybeToOption[A]: ScalettoLib.this.puroLib.Maybe[ScalettoLib.this.dsl.Val[A]] ScalettoLib.this.dsl.-⚬ ScalettoLib.this.dsl.Val[Option[A]]
Exported from ScalettoLib
def mergeDemands[A]: (ScalettoLib.this.dsl.Neg[A] ScalettoLib.this.dsl.|*| ScalettoLib.this.dsl.Neg[A]) ScalettoLib.this.dsl.-⚬ ScalettoLib.this.dsl.Neg[A]
Exported from ScalettoLib
def need: Puro.this.Need Puro.this.-⚬ Puro.this.One
Exported from Puro
def needAsInvertedDone: Puro.this.Need Puro.this.-⚬ Puro.this.-[Puro.this.Done]
Exported from Puro
export negValDuality[A]
Exported from ScalettoLib
def neglect[A]: Scaletto.this.Val[A] Scaletto.this.-⚬ Scaletto.this.Done
Exported from Scaletto
def notifyChoice[A, B]: (Puro.this.Pong Puro.this.|*| (A Puro.this.|&| B)) Puro.this.-⚬ (A Puro.this.|&| B)
Exported from Puro

Signals (in the negative direction) when it is known which side of the choice (A |&| B) has been chosen.

Signals (in the negative direction) when it is known which side of the choice (A |&| B) has been chosen.

Attributes

def notifyChoiceAndLeft[A, B](using A: Negative[A]): (PuroLib.this.dsl.Pong PuroLib.this.dsl.|*| (A PuroLib.this.dsl.|&| B)) PuroLib.this.dsl.-⚬ (A PuroLib.this.dsl.|&| B)
Exported from PuroLib

Notifies when the choice (|&amp;|) is made and if it is left, the left side notifies.

Notifies when the choice (|&amp;|) is made and if it is left, the left side notifies.

Attributes

def notifyChoiceAndLeft[A, B](notifyL: (PuroLib.this.dsl.Pong PuroLib.this.dsl.|*| A) PuroLib.this.dsl.-⚬ A): (PuroLib.this.dsl.Pong PuroLib.this.dsl.|*| (A PuroLib.this.dsl.|&| B)) PuroLib.this.dsl.-⚬ (A PuroLib.this.dsl.|&| B)
Exported from PuroLib

Notifies when the choice (|&amp;|) is made and if it is left, the left side notifies using the given function.

Notifies when the choice (|&amp;|) is made and if it is left, the left side notifies using the given function.

Attributes

def notifyChoiceAndRight[A, B](using B: Negative[B]): (PuroLib.this.dsl.Pong PuroLib.this.dsl.|*| (A PuroLib.this.dsl.|&| B)) PuroLib.this.dsl.-⚬ (A PuroLib.this.dsl.|&| B)
Exported from PuroLib

Notifies when the choice (|&amp;|) is made and if it is right, the right side notifies.

Notifies when the choice (|&amp;|) is made and if it is right, the right side notifies.

Attributes

def notifyChoiceAndRight[A, B](notifyR: (PuroLib.this.dsl.Pong PuroLib.this.dsl.|*| B) PuroLib.this.dsl.-⚬ B): (PuroLib.this.dsl.Pong PuroLib.this.dsl.|*| (A PuroLib.this.dsl.|&| B)) PuroLib.this.dsl.-⚬ (A PuroLib.this.dsl.|&| B)
Exported from PuroLib

Notifies when the choice (|&amp;|) is made and if it is right, the right side notifies using the given function.

Notifies when the choice (|&amp;|) is made and if it is right, the right side notifies using the given function.

Attributes

def notifyChoiceAndSides[A, B](using A: Negative[A], B: Negative[B]): (PuroLib.this.dsl.Pong PuroLib.this.dsl.|*| (A PuroLib.this.dsl.|&| B)) PuroLib.this.dsl.-⚬ (A PuroLib.this.dsl.|&| B)
Exported from PuroLib

Notifies when the choice (|&amp;|) is made and the chosen side notifies.

Notifies when the choice (|&amp;|) is made and the chosen side notifies.

Attributes

def notifyChoiceAndSides[A, B](notifyL: (PuroLib.this.dsl.Pong PuroLib.this.dsl.|*| A) PuroLib.this.dsl.-⚬ A, notifyR: (PuroLib.this.dsl.Pong PuroLib.this.dsl.|*| B) PuroLib.this.dsl.-⚬ B): (PuroLib.this.dsl.Pong PuroLib.this.dsl.|*| (A PuroLib.this.dsl.|&| B)) PuroLib.this.dsl.-⚬ (A PuroLib.this.dsl.|&| B)
Exported from PuroLib

Notifies when the choice (|&amp;|) is made and the chosen side notifies using the respective given function.

Notifies when the choice (|&amp;|) is made and the chosen side notifies using the respective given function.

Attributes

def notifyDoneL: Puro.this.Done Puro.this.-⚬ (Puro.this.Ping Puro.this.|*| Puro.this.Done)
Exported from Puro
def notifyDoneR: Puro.this.Done Puro.this.-⚬ (Puro.this.Done Puro.this.|*| Puro.this.Ping)
Exported from Puro
def notifyEither[A, B]: (A Puro.this.|+| B) Puro.this.-⚬ (Puro.this.Ping Puro.this.|*| (A Puro.this.|+| B))
Exported from Puro

Signals when it is decided whether A |+| B actually contains the left side or the right side.

Signals when it is decided whether A |+| B actually contains the left side or the right side.

Attributes

def notifyEitherAndLeft[A, B](using A: Positive[A]): (A PuroLib.this.dsl.|+| B) PuroLib.this.dsl.-⚬ (PuroLib.this.dsl.Ping PuroLib.this.dsl.|*| (A PuroLib.this.dsl.|+| B))
Exported from PuroLib

Notifies when the |+| is decided and if it is left, the left side notifies.

Notifies when the |+| is decided and if it is left, the left side notifies.

Attributes

def notifyEitherAndLeft[A, B](notifyL: A PuroLib.this.dsl.-⚬ (PuroLib.this.dsl.Ping PuroLib.this.dsl.|*| A)): (A PuroLib.this.dsl.|+| B) PuroLib.this.dsl.-⚬ (PuroLib.this.dsl.Ping PuroLib.this.dsl.|*| (A PuroLib.this.dsl.|+| B))
Exported from PuroLib

Notifies when the |+| is decided and if it is left, the left side notifies using the given function.

Notifies when the |+| is decided and if it is left, the left side notifies using the given function.

Attributes

def notifyEitherAndRight[A, B](using B: Positive[B]): (A PuroLib.this.dsl.|+| B) PuroLib.this.dsl.-⚬ (PuroLib.this.dsl.Ping PuroLib.this.dsl.|*| (A PuroLib.this.dsl.|+| B))
Exported from PuroLib

Notifies when the |+| is decided and if it is right, the right side notifies.

Notifies when the |+| is decided and if it is right, the right side notifies.

Attributes

def notifyEitherAndRight[A, B](notifyR: B PuroLib.this.dsl.-⚬ (PuroLib.this.dsl.Ping PuroLib.this.dsl.|*| B)): (A PuroLib.this.dsl.|+| B) PuroLib.this.dsl.-⚬ (PuroLib.this.dsl.Ping PuroLib.this.dsl.|*| (A PuroLib.this.dsl.|+| B))
Exported from PuroLib

Notifies when the |+| is decided and if it is right, the right side notifies using the given function.

Notifies when the |+| is decided and if it is right, the right side notifies using the given function.

Attributes

def notifyEitherAndSides[A, B](using A: Positive[A], B: Positive[B]): (A PuroLib.this.dsl.|+| B) PuroLib.this.dsl.-⚬ (PuroLib.this.dsl.Ping PuroLib.this.dsl.|*| (A PuroLib.this.dsl.|+| B))
Exported from PuroLib

Notifies when the |+| is decided and the present side notifies.

Notifies when the |+| is decided and the present side notifies.

Attributes

def notifyEitherAndSides[A, B](notifyL: A PuroLib.this.dsl.-⚬ (PuroLib.this.dsl.Ping PuroLib.this.dsl.|*| A), notifyR: B PuroLib.this.dsl.-⚬ (PuroLib.this.dsl.Ping PuroLib.this.dsl.|*| B)): (A PuroLib.this.dsl.|+| B) PuroLib.this.dsl.-⚬ (PuroLib.this.dsl.Ping PuroLib.this.dsl.|*| (A PuroLib.this.dsl.|+| B))
Exported from PuroLib

Notifies when the |+| is decided and the present side notifies using the respective given function.

Notifies when the |+| is decided and the present side notifies using the respective given function.

Attributes

def notifyNeedL: (Puro.this.Pong Puro.this.|*| Puro.this.Need) Puro.this.-⚬ Puro.this.Need
Exported from Puro
def notifyNeedR: (Puro.this.Need Puro.this.|*| Puro.this.Pong) Puro.this.-⚬ Puro.this.Need
Exported from Puro
def notifyNeg[A]: (Scaletto.this.Pong Scaletto.this.|*| Scaletto.this.Neg[A]) Scaletto.this.-⚬ Scaletto.this.Neg[A]
Exported from Scaletto
def notifyNegFst[A](using A: Negative[A]): (PuroLib.this.dsl.Pong PuroLib.this.dsl.|*| A) PuroLib.this.dsl.-⚬ A
Exported from PuroLib
def notifyNegSnd[A](using A: Negative[A]): (A PuroLib.this.dsl.|*| PuroLib.this.dsl.Pong) PuroLib.this.dsl.-⚬ A
Exported from PuroLib
def notifyPosFst[A](using A: Positive[A]): A PuroLib.this.dsl.-⚬ (PuroLib.this.dsl.Ping PuroLib.this.dsl.|*| A)
Exported from PuroLib
def notifyPosSnd[A](using A: Positive[A]): A PuroLib.this.dsl.-⚬ (A PuroLib.this.dsl.|*| PuroLib.this.dsl.Ping)
Exported from PuroLib
def notifyVal[A]: Scaletto.this.Val[A] Scaletto.this.-⚬ (Scaletto.this.Ping Scaletto.this.|*| Scaletto.this.Val[A])
Exported from Scaletto
def obj[A, B](f: A Puro.this.-⚬ B): Puro.this.One Puro.this.-⚬ (A Puro.this.=⚬ B)
Exported from Puro

Turn a function into a function object.

Turn a function into a function object.

Attributes

def optionToPMaybe[A]: ScalettoLib.this.dsl.Val[Option[A]] ScalettoLib.this.dsl.-⚬ ScalettoLib.this.puroLib.PMaybe[ScalettoLib.this.dsl.Val[A]]
Exported from ScalettoLib
def out[A, B, C](f: B Puro.this.-⚬ C): (A Puro.this.=⚬ B) Puro.this.-⚬ (A Puro.this.=⚬ C)
Exported from Puro

Map the output of a function object.

Map the output of a function object.

Attributes

def output[A]: PuroLib.this.Functor[[x] =>> A PuroLib.this.dsl.=⚬ x]
Exported from PuroLib

Function object (internal hom) is covariant in the output type.

Function object (internal hom) is covariant in the output type.

Attributes

def pMaybeToOption[A]: ScalettoLib.this.puroLib.PMaybe[ScalettoLib.this.dsl.Val[A]] ScalettoLib.this.dsl.-⚬ ScalettoLib.this.dsl.Val[Option[A]]
Exported from ScalettoLib
def pack[F[_]]: F[Puro.this.Rec[F]] Puro.this.-⚬ Puro.this.Rec[F]
Exported from Puro

Hides one level of a recursive type definition.

Hides one level of a recursive type definition.

Attributes

def packDemand[F[_]]: Puro.this.-[F[Puro.this.Rec[F]]] Puro.this.-⚬ Puro.this.-[Puro.this.Rec[F]]
Exported from Puro
def par[A, B, C, D](f: A Puro.this.-⚬ B, g: C Puro.this.-⚬ D): (A Puro.this.|*| C) Puro.this.-⚬ (B Puro.this.|*| D)
Exported from Puro
def parFromOne[A, B](f: PuroLib.this.dsl.One PuroLib.this.dsl.-⚬ A, g: PuroLib.this.dsl.One PuroLib.this.dsl.-⚬ B): PuroLib.this.dsl.One PuroLib.this.dsl.-⚬ (A PuroLib.this.dsl.|*| B)
Exported from PuroLib
def parToOne[A, B](f: A PuroLib.this.dsl.-⚬ PuroLib.this.dsl.One, g: B PuroLib.this.dsl.-⚬ PuroLib.this.dsl.One): (A PuroLib.this.dsl.|*| B) PuroLib.this.dsl.-⚬ PuroLib.this.dsl.One
Exported from PuroLib
def ping: Puro.this.One Puro.this.-⚬ Puro.this.Ping
Exported from Puro
def pingAsInvertedPong: Puro.this.Ping Puro.this.-⚬ Puro.this.-[Puro.this.Pong]
Exported from Puro
def pong: Puro.this.Pong Puro.this.-⚬ Puro.this.One
Exported from Puro
def pongAsInvertedPing: Puro.this.Pong Puro.this.-⚬ Puro.this.-[Puro.this.Ping]
Exported from Puro
def printLine[A](f: A => String): ScalettoLib.this.dsl.Val[A] ScalettoLib.this.dsl.-⚬ ScalettoLib.this.dsl.Done
Exported from ScalettoLib
def printLine: ScalettoLib.this.dsl.Val[String] ScalettoLib.this.dsl.-⚬ ScalettoLib.this.dsl.Done
Exported from ScalettoLib
final val producing: Puro.this.producing
Exported from Puro
def promise[A]: Scaletto.this.One Scaletto.this.-⚬ (Scaletto.this.Neg[A] Scaletto.this.|*| Scaletto.this.Val[A])
Exported from Scaletto

Creates an entangled pair of demand (Neg) and supply (Val) such that when the demand is fulfilled with a value, that value will be produced by the supply.

Creates an entangled pair of demand (Neg) and supply (Val) such that when the demand is fulfilled with a value, that value will be produced by the supply.

Attributes

def putStr: ScalettoLib.this.dsl.Val[String] ScalettoLib.this.dsl.-⚬ ScalettoLib.this.dsl.Done
Exported from ScalettoLib
def rInvert[A, B](using ev: PuroLib.this.Dual[A, B]): (A PuroLib.this.dsl.|*| B) PuroLib.this.dsl.-⚬ PuroLib.this.dsl.One
Exported from PuroLib
def rInvertEither[A, B, Ȧ, ](rInvertA: (A PuroLib.this.dsl.|*| Ȧ) PuroLib.this.dsl.-⚬ PuroLib.this.dsl.One, rInvertB: (B PuroLib.this.dsl.|*| ) PuroLib.this.dsl.-⚬ PuroLib.this.dsl.One): ((A PuroLib.this.dsl.|+| B) PuroLib.this.dsl.|*| (Ȧ PuroLib.this.dsl.|&| )) PuroLib.this.dsl.-⚬ PuroLib.this.dsl.One
Exported from PuroLib
def rInvertPair[A, B, Ȧ, ](rInvertA: (A PuroLib.this.dsl.|*| Ȧ) PuroLib.this.dsl.-⚬ PuroLib.this.dsl.One, rInvertB: (B PuroLib.this.dsl.|*| ) PuroLib.this.dsl.-⚬ PuroLib.this.dsl.One): (A PuroLib.this.dsl.|*| B PuroLib.this.dsl.|*| (Ȧ PuroLib.this.dsl.|*| )) PuroLib.this.dsl.-⚬ PuroLib.this.dsl.One
Exported from PuroLib
def rInvertPingPong: (Puro.this.Ping Puro.this.|*| Puro.this.Pong) Puro.this.-⚬ Puro.this.One
Exported from Puro
def rInvertRec[F[_], G[_]](rInvertSub: [x, y] => ((x PuroLib.this.dsl.|*| y) PuroLib.this.dsl.-⚬ PuroLib.this.dsl.One) => (F[x] PuroLib.this.dsl.|*| G[y]) PuroLib.this.dsl.-⚬ PuroLib.this.dsl.One): (PuroLib.this.dsl.Rec[F] PuroLib.this.dsl.|*| PuroLib.this.dsl.Rec[G]) PuroLib.this.dsl.-⚬ PuroLib.this.dsl.One
Exported from PuroLib
def rInvertSignal: (Puro.this.Done Puro.this.|*| Puro.this.Need) Puro.this.-⚬ Puro.this.One
Exported from Puro

Reverses the Done signal (flowing in the positive direction, i.e. along the -⚬ arrow) into a Need signal (flowing in the negative direciton, i.e. against the -⚬ arrow).

Reverses the Done signal (flowing in the positive direction, i.e. along the -⚬ arrow) into a Need signal (flowing in the negative direciton, i.e. against the -⚬ arrow).

 ┏━━━━━━━━━━━┓
 ┞────┐      ┃
 ╎Done│┄┄┐   ┃
 ┟────┘  ┆   ┃
 ┃       ┆   ┃
 ┞────┐  ┆   ┃
 ╎Need│←┄┘   ┃
 ┟────┘      ┃
 ┗━━━━━━━━━━━┛

Attributes

def rInvertTerminus: (Puro.this.RTerminus Puro.this.|*| Puro.this.LTerminus) Puro.this.-⚬ Puro.this.One
Exported from Puro
def race[A, B](using A: Positive[A], B: Positive[B]): (A PuroLib.this.dsl.|*| B) PuroLib.this.dsl.-⚬ ((A PuroLib.this.dsl.|*| B) PuroLib.this.dsl.|+| (A PuroLib.this.dsl.|*| B))
Exported from PuroLib
def raceAgainstDoneL[A](using A: Positive[A]): (PuroLib.this.dsl.Done PuroLib.this.dsl.|*| A) PuroLib.this.dsl.-⚬ (A PuroLib.this.dsl.|+| A)
Exported from PuroLib
def raceAgainstDoneR[A](using A: Positive[A]): (A PuroLib.this.dsl.|*| PuroLib.this.dsl.Done) PuroLib.this.dsl.-⚬ (A PuroLib.this.dsl.|+| A)
Exported from PuroLib
def raceBy[A](notify: A PuroLib.this.dsl.-⚬ (PuroLib.this.dsl.Ping PuroLib.this.dsl.|*| A)): (A PuroLib.this.dsl.|*| A) PuroLib.this.dsl.-⚬ ((A PuroLib.this.dsl.|*| A) PuroLib.this.dsl.|+| (A PuroLib.this.dsl.|*| A))
Exported from PuroLib
def raceBy[A, B](notifyA: A PuroLib.this.dsl.-⚬ (PuroLib.this.dsl.Ping PuroLib.this.dsl.|*| A), notifyB: B PuroLib.this.dsl.-⚬ (PuroLib.this.dsl.Ping PuroLib.this.dsl.|*| B)): (A PuroLib.this.dsl.|*| B) PuroLib.this.dsl.-⚬ ((A PuroLib.this.dsl.|*| B) PuroLib.this.dsl.|+| (A PuroLib.this.dsl.|*| B))
Exported from PuroLib
def raceDone: (PuroLib.this.dsl.Done PuroLib.this.dsl.|*| PuroLib.this.dsl.Done) PuroLib.this.dsl.-⚬ (PuroLib.this.dsl.Done PuroLib.this.dsl.|+| PuroLib.this.dsl.Done)
Exported from PuroLib

Races the two Done signals and

Races the two Done signals and

  • produces left if the first signal wins, in which case it returns the second signal that still has to be awaited;
  • produces right if the second signal wins, in which case it returns the first signal that still has to be awaited. It is biased to the left: if both signals have arrived by the time of inquiry, returns left.

Attributes

def racePair: (Puro.this.Ping Puro.this.|*| Puro.this.Ping) Puro.this.-⚬ (Puro.this.One Puro.this.|+| Puro.this.One)
Exported from Puro

Races the two Ping signals. Produces left if the first signal wins and right if the second signal wins. It is biased to the left: if both signals have arrived by the time of inquiry, returns left.

Races the two Ping signals. Produces left if the first signal wins and right if the second signal wins. It is biased to the left: if both signals have arrived by the time of inquiry, returns left.

Attributes

def racePreferred[A, B](using A: Positive[A], B: Positive[B]): (PuroLib.this.dsl.Ping PuroLib.this.dsl.|*| (A PuroLib.this.dsl.|*| B)) PuroLib.this.dsl.-⚬ ((A PuroLib.this.dsl.|*| B) PuroLib.this.dsl.|+| (A PuroLib.this.dsl.|*| B))
Exported from PuroLib
def readLine: ScalettoLib.this.dsl.Done ScalettoLib.this.dsl.-⚬ ScalettoLib.this.dsl.Val[String]
Exported from ScalettoLib
def rec[A, B](f: (Puro.this.Sub[A, B] Puro.this.|*| A) Puro.this.-⚬ B): A Puro.this.-⚬ B
Exported from Puro
def rec2[A, B, C, D](fs: (A PuroLib.this.dsl.-⚬ B, C PuroLib.this.dsl.-⚬ D) => (A PuroLib.this.dsl.-⚬ B, C PuroLib.this.dsl.-⚬ D)): (A PuroLib.this.dsl.-⚬ B, C PuroLib.this.dsl.-⚬ D)
Exported from PuroLib
def rec2[A, B, C, D](f: (A PuroLib.this.dsl.-⚬ B, C PuroLib.this.dsl.-⚬ D) => A PuroLib.this.dsl.-⚬ B, g: (A PuroLib.this.dsl.-⚬ B, C PuroLib.this.dsl.-⚬ D) => C PuroLib.this.dsl.-⚬ D): (A PuroLib.this.dsl.-⚬ B, C PuroLib.this.dsl.-⚬ D)
Exported from PuroLib

Creates a pair of mutually recursive functions.

Creates a pair of mutually recursive functions.

Attributes

def rec3[A, B, C, D, E, F](fs: (A PuroLib.this.dsl.-⚬ B, C PuroLib.this.dsl.-⚬ D, E PuroLib.this.dsl.-⚬ F) => (A PuroLib.this.dsl.-⚬ B, C PuroLib.this.dsl.-⚬ D, E PuroLib.this.dsl.-⚬ F)): (A PuroLib.this.dsl.-⚬ B, C PuroLib.this.dsl.-⚬ D, E PuroLib.this.dsl.-⚬ F)
Exported from PuroLib
def rec3[A, B, C, D, E, F](f: (A PuroLib.this.dsl.-⚬ B, C PuroLib.this.dsl.-⚬ D, E PuroLib.this.dsl.-⚬ F) => A PuroLib.this.dsl.-⚬ B, g: (A PuroLib.this.dsl.-⚬ B, C PuroLib.this.dsl.-⚬ D, E PuroLib.this.dsl.-⚬ F) => C PuroLib.this.dsl.-⚬ D, h: (A PuroLib.this.dsl.-⚬ B, C PuroLib.this.dsl.-⚬ D, E PuroLib.this.dsl.-⚬ F) => E PuroLib.this.dsl.-⚬ F): (A PuroLib.this.dsl.-⚬ B, C PuroLib.this.dsl.-⚬ D, E PuroLib.this.dsl.-⚬ F)
Exported from PuroLib
def recPartitioning[F[_]](p: Partitioning[Puro.this.-⚬, Puro.this.|*|, F[Puro.this.Rec[F]]]): Partitioning[Puro.this.-⚬, Puro.this.|*|, Puro.this.Rec[F]] { type Partition = p.Partition; }
Exported from Puro
Exported from Puro
def release[R, A, B](f: (R, A) => B): (Scaletto.this.Res[R] Scaletto.this.|*| Scaletto.this.Val[A]) Scaletto.this.-⚬ Scaletto.this.Val[B]
Exported from Scaletto

Releases a resource using the given function. The release function previously registered during resource acquisition is not used.

Releases a resource using the given function. The release function previously registered during resource acquisition is not used.

Type parameters

A

additional parameter of the release function

B

additional data produced by the release function

R

type of the resource

Value parameters

f

the release function

Attributes

def release[R]: Scaletto.this.Res[R] Scaletto.this.-⚬ Scaletto.this.Done
Exported from Scaletto

Releases a resource using the release function registered during resource acquisition.

Releases a resource using the release function registered during resource acquisition.

Attributes

def release0[R, B](release: R => B): ScalettoLib.this.dsl.Res[R] ScalettoLib.this.dsl.-⚬ ScalettoLib.this.dsl.Val[B]
Exported from ScalettoLib

Variant of release that does not take additional input.

Variant of release that does not take additional input.

Attributes

def releaseAsync[R, A, B](f: (R, A) => Async[B]): (Scaletto.this.Res[R] Scaletto.this.|*| Scaletto.this.Val[A]) Scaletto.this.-⚬ Scaletto.this.Val[B]
Exported from Scaletto
def releaseAsync0[R, B](release: R => Async[B]): ScalettoLib.this.dsl.Res[R] ScalettoLib.this.dsl.-⚬ ScalettoLib.this.dsl.Val[B]
Exported from ScalettoLib

Variant of releaseAsync that does not take additional input.

Variant of releaseAsync that does not take additional input.

Attributes

def releaseWith[R, A, B](f: Scaletto.this.ScalaFun[(R, A), B]): (Scaletto.this.Res[R] Scaletto.this.|*| Scaletto.this.Val[A]) Scaletto.this.-⚬ Scaletto.this.Val[B]
Exported from Scaletto
def select[A, B](using A: Negative[A], B: Negative[B]): ((A PuroLib.this.dsl.|*| B) PuroLib.this.dsl.|&| (A PuroLib.this.dsl.|*| B)) PuroLib.this.dsl.-⚬ (A PuroLib.this.dsl.|*| B)
Exported from PuroLib
def selectAgainstL[A](using A: Negative[A]): (A PuroLib.this.dsl.|&| A) PuroLib.this.dsl.-⚬ (PuroLib.this.dsl.Need PuroLib.this.dsl.|*| A)
Exported from PuroLib
def selectAgainstR[A](using A: Negative[A]): (A PuroLib.this.dsl.|&| A) PuroLib.this.dsl.-⚬ (A PuroLib.this.dsl.|*| PuroLib.this.dsl.Need)
Exported from PuroLib
def selectBy[A](notify: (PuroLib.this.dsl.Pong PuroLib.this.dsl.|*| A) PuroLib.this.dsl.-⚬ A): ((A PuroLib.this.dsl.|*| A) PuroLib.this.dsl.|&| (A PuroLib.this.dsl.|*| A)) PuroLib.this.dsl.-⚬ (A PuroLib.this.dsl.|*| A)
Exported from PuroLib
def selectBy[A, B](notifyA: (PuroLib.this.dsl.Pong PuroLib.this.dsl.|*| A) PuroLib.this.dsl.-⚬ A, notifyB: (PuroLib.this.dsl.Pong PuroLib.this.dsl.|*| B) PuroLib.this.dsl.-⚬ B): ((A PuroLib.this.dsl.|*| B) PuroLib.this.dsl.|&| (A PuroLib.this.dsl.|*| B)) PuroLib.this.dsl.-⚬ (A PuroLib.this.dsl.|*| B)
Exported from PuroLib
def selectNeed: (PuroLib.this.dsl.Need PuroLib.this.dsl.|&| PuroLib.this.dsl.Need) PuroLib.this.dsl.-⚬ (PuroLib.this.dsl.Need PuroLib.this.dsl.|*| PuroLib.this.dsl.Need)
Exported from PuroLib

Races two Need signals, i.e. signals traveling in the negative direction (i.e. opposite the -⚬ arrow). Based on which Need signal from the out-port wins the race, selects one of the two Need signals from the in-port:

Races two Need signals, i.e. signals traveling in the negative direction (i.e. opposite the -⚬ arrow). Based on which Need signal from the out-port wins the race, selects one of the two Need signals from the in-port:

  • If the first signal from the out-port wins the race, selects the left signal from the in-port and pipes to it the remaining (i.e. the right) signal from the out-port.
  • If the second signal from the out-port wins the race, selects the right signal from the in-port and pipes to it the reamining (i.e. the left) signal from the out-port. It is biased to the left: if both signals from the out-port have arrived by the time of inquiry, selects the left signal from the in-port.

Attributes

def selectPair: (Puro.this.One Puro.this.|&| Puro.this.One) Puro.this.-⚬ (Puro.this.Pong Puro.this.|*| Puro.this.Pong)
Exported from Puro

Races the two Pong signals (traveling from right to left). Chooses left if the first signal wins and right if the second signal wins. It is biased to the left: if both signals have arrived by the time of inquiry, chooses left.

Races the two Pong signals (traveling from right to left). Chooses left if the first signal wins and right if the second signal wins. It is biased to the left: if both signals have arrived by the time of inquiry, chooses left.

Attributes

def sequence[A : Positive, B : Positive]: (A PuroLib.this.dsl.|*| B) PuroLib.this.dsl.-⚬ (A PuroLib.this.dsl.|*| B)
Exported from PuroLib

Alias for sequence_PP.

Alias for sequence_PP.

Attributes

def sequence_NN[A, B](using A: Negative[A], B: Negative[B]): (A PuroLib.this.dsl.|*| B) PuroLib.this.dsl.-⚬ (A PuroLib.this.dsl.|*| B)
Exported from PuroLib
def sequence_NP[A, B](using A: Negative[A], B: Positive[B]): (A PuroLib.this.dsl.|*| B) PuroLib.this.dsl.-⚬ (A PuroLib.this.dsl.|*| B)
Exported from PuroLib
def sequence_PN[A, B](using A: Positive[A], B: Negative[B]): (A PuroLib.this.dsl.|*| B) PuroLib.this.dsl.-⚬ (A PuroLib.this.dsl.|*| B)
Exported from PuroLib
def sequence_PP[A, B](using A: Positive[A], B: Positive[B]): (A PuroLib.this.dsl.|*| B) PuroLib.this.dsl.-⚬ (A PuroLib.this.dsl.|*| B)
Exported from PuroLib
def signalDone[A](using A: Positive[A]): A PuroLib.this.dsl.-⚬ (A PuroLib.this.dsl.|*| PuroLib.this.dsl.Done)
Exported from PuroLib
def signalNegFst[A](using A: Negative[A]): (PuroLib.this.dsl.Need PuroLib.this.dsl.|*| A) PuroLib.this.dsl.-⚬ A
Exported from PuroLib
def signalNegSnd[A](using A: Negative[A]): (A PuroLib.this.dsl.|*| PuroLib.this.dsl.Need) PuroLib.this.dsl.-⚬ A
Exported from PuroLib
def signalPosFst[A](using A: Positive[A]): A PuroLib.this.dsl.-⚬ (PuroLib.this.dsl.Done PuroLib.this.dsl.|*| A)
Exported from PuroLib
def signalPosSnd[A](using A: Positive[A]): A PuroLib.this.dsl.-⚬ (A PuroLib.this.dsl.|*| PuroLib.this.dsl.Done)
Exported from PuroLib
Exported from ScalettoLib
Exported from ScalettoLib
export signalingNeg[A]
Exported from ScalettoLib
export signalingVal[A]
Exported from ScalettoLib
def sizeOf[A, B](f: A Scaletto.this.-⚬ B): Long
Exported from Scaletto

Returns the size of the given program, in further unspecified units. Useful only for approximate relative comparisons.

Returns the size of the given program, in further unspecified units. Useful only for approximate relative comparisons.

Attributes

def snd[A, B, C](f: B Puro.this.-⚬ C): (A Puro.this.|*| B) Puro.this.-⚬ (A Puro.this.|*| C)
Exported from Puro
def split[A : PuroLib.this.dsl.Cosemigroup]: A PuroLib.this.dsl.-⚬ (A PuroLib.this.dsl.|*| A)
Exported from PuroLib
def splitResource[R, A, S, T, B](f: (R, A) => (S, T, B), release1: Option[S => Unit], release2: Option[T => Unit]): (Scaletto.this.Res[R] Scaletto.this.|*| Scaletto.this.Val[A]) Scaletto.this.-⚬ (Scaletto.this.Res[S] Scaletto.this.|*| Scaletto.this.Res[T] Scaletto.this.|*| Scaletto.this.Val[B])
Exported from Scaletto
def splitResource[R, A, S, T, B](f: Scaletto.this.ScalaFun[(R, A), (S, T, B)], release1: Option[Scaletto.this.ScalaFun[S, Unit]], release2: Option[Scaletto.this.ScalaFun[T, Unit]]): (Scaletto.this.Res[R] Scaletto.this.|*| Scaletto.this.Val[A]) Scaletto.this.-⚬ (Scaletto.this.Res[S] Scaletto.this.|*| Scaletto.this.Res[T] Scaletto.this.|*| Scaletto.this.Val[B])
Exported from Scaletto
def splitResource0[R, S, T](f: R => (S, T), release1: Option[S => Unit], release2: Option[T => Unit]): ScalettoLib.this.dsl.Res[R] ScalettoLib.this.dsl.-⚬ (ScalettoLib.this.dsl.Res[S] ScalettoLib.this.dsl.|*| ScalettoLib.this.dsl.Res[T])
Exported from ScalettoLib
def splitResource0[R, S, T](f: ScalettoLib.this.dsl.ScalaFun[R, (S, T)], release1: Option[ScalettoLib.this.dsl.ScalaFun[S, Unit]], release2: Option[ScalettoLib.this.dsl.ScalaFun[T, Unit]]): ScalettoLib.this.dsl.Res[R] ScalettoLib.this.dsl.-⚬ (ScalettoLib.this.dsl.Res[S] ScalettoLib.this.dsl.|*| ScalettoLib.this.dsl.Res[T])
Exported from ScalettoLib
def splitResourceAsync[R, A, S, T, B](f: (R, A) => Async[(S, T, B)], release1: Option[S => Async[Unit]], release2: Option[T => Async[Unit]]): (Scaletto.this.Res[R] Scaletto.this.|*| Scaletto.this.Val[A]) Scaletto.this.-⚬ (Scaletto.this.Res[S] Scaletto.this.|*| Scaletto.this.Res[T] Scaletto.this.|*| Scaletto.this.Val[B])
Exported from Scaletto
def splitResourceAsync0[R, S, T](f: R => Async[(S, T)], release1: Option[S => Async[Unit]], release2: Option[T => Async[Unit]]): ScalettoLib.this.dsl.Res[R] ScalettoLib.this.dsl.-⚬ (ScalettoLib.this.dsl.Res[S] ScalettoLib.this.dsl.|*| ScalettoLib.this.dsl.Res[T])
Exported from ScalettoLib
def strengthenPing: Puro.this.Ping Puro.this.-⚬ Puro.this.Done
Exported from Puro
def strengthenPong: Puro.this.Need Puro.this.-⚬ Puro.this.Pong
Exported from Puro
def subordinateFst[A, B, C, D]: ((A PuroLib.this.dsl.|*| B) PuroLib.this.dsl.|&| (C PuroLib.this.dsl.|*| D)) PuroLib.this.dsl.-⚬ ((A PuroLib.this.dsl.|+| C) PuroLib.this.dsl.|*| (B PuroLib.this.dsl.|&| D))
Exported from PuroLib

Present a choice between two pairs ((A |*| B) |&| (C |*| D)) as a choice (B |&| D) between the second parts of the respective pairs and on the side provide the other part of the chosen input pair, i.e. either A or C (A |+| C).

Present a choice between two pairs ((A |*| B) |&| (C |*| D)) as a choice (B |&| D) between the second parts of the respective pairs and on the side provide the other part of the chosen input pair, i.e. either A or C (A |+| C).

Attributes

def subordinateSnd[A, B, C, D]: ((A PuroLib.this.dsl.|*| B) PuroLib.this.dsl.|&| (C PuroLib.this.dsl.|*| D)) PuroLib.this.dsl.-⚬ ((A PuroLib.this.dsl.|&| C) PuroLib.this.dsl.|*| (B PuroLib.this.dsl.|+| D))
Exported from PuroLib

Present a choice between two pairs ((A |*| B) |&| (C |*| D)) as a choice (A |&| C) between the first parts of the respective pairs and on the side provide the other part of the chosen input pair, i.e. either B or D (B |+| D).

Present a choice between two pairs ((A |*| B) |&| (C |*| D)) as a choice (A |&| C) between the first parts of the respective pairs and on the side provide the other part of the chosen input pair, i.e. either B or D (B |+| D).

Attributes

def supply[A]: (A Puro.this.|*| Puro.this.-[A]) Puro.this.-⚬ Puro.this.One
Exported from Puro

Uses the resource from the first in-port to satisfy the demand from the second in-port. Alias for backvert.

Uses the resource from the first in-port to satisfy the demand from the second in-port. Alias for backvert.

Attributes

def swap[A, B]: (A Puro.this.|*| B) Puro.this.-⚬ (B Puro.this.|*| A)
Exported from Puro
def testByVals[A, B, K](aKey: ScalettoLib.this.puroLib.Getter[A, ScalettoLib.this.dsl.Val[K]], bKey: ScalettoLib.this.puroLib.Getter[B, ScalettoLib.this.dsl.Val[K]], pred: (K, K) => Boolean): (A ScalettoLib.this.dsl.|*| B) ScalettoLib.this.dsl.-⚬ ((A ScalettoLib.this.dsl.|*| B) ScalettoLib.this.dsl.|+| (A ScalettoLib.this.dsl.|*| B))
Exported from ScalettoLib
def toChoiceOfDemands[A, B]: Puro.this.-[A Puro.this.|+| B] Puro.this.-⚬ (Puro.this.-[A] Puro.this.|&| Puro.this.-[B])
Exported from Puro

Converts demand for either to a choice of which side to supply. Alias for distributeInversionInto_|+|.

Converts demand for either to a choice of which side to supply. Alias for distributeInversionInto_|+|.

Attributes

def toScalaList[A]: ScalettoLib.this.puroLib.LList[ScalettoLib.this.dsl.Val[A]] ScalettoLib.this.dsl.-⚬ ScalettoLib.this.dsl.Val[List[A]]
Exported from ScalettoLib
def toScalaList1[A]: ScalettoLib.this.puroLib.LList1[ScalettoLib.this.dsl.Val[A]] ScalettoLib.this.dsl.-⚬ ScalettoLib.this.dsl.Val[::[A]]
Exported from ScalettoLib
def transformResource[R, A, S, B](f: (R, A) => (S, B), release: Option[S => Unit]): (Scaletto.this.Res[R] Scaletto.this.|*| Scaletto.this.Val[A]) Scaletto.this.-⚬ (Scaletto.this.Res[S] Scaletto.this.|*| Scaletto.this.Val[B])
Exported from Scaletto

Transforms a resource into a resource of (possibly) different type.

Transforms a resource into a resource of (possibly) different type.

Type parameters

A

additional parameter of the transformation

B

additional output of the transformation

R

type of the input resource

S

type of the output resource

Value parameters

f

the transformation function. It receives the input resource and additional input of type A. It returns the new resource and additional output of type B.

release

called to release the new resource in case of a crash. None means no cleanup is needed

Attributes

def transformResource0[R, S](f: R => S, release: Option[S => Unit]): ScalettoLib.this.dsl.Res[R] ScalettoLib.this.dsl.-⚬ ScalettoLib.this.dsl.Res[S]
Exported from ScalettoLib

Variant of transformResource that does not take additional input and does not produce additional output.

Variant of transformResource that does not take additional input and does not produce additional output.

Attributes

def transformResourceAsync[R, A, S, B](f: (R, A) => Async[(S, B)], release: Option[S => Async[Unit]]): (Scaletto.this.Res[R] Scaletto.this.|*| Scaletto.this.Val[A]) Scaletto.this.-⚬ (Scaletto.this.Res[S] Scaletto.this.|*| Scaletto.this.Val[B])
Exported from Scaletto
def transformResourceAsync0[R, S](f: R => Async[S], release: Option[S => Async[Unit]]): ScalettoLib.this.dsl.Res[R] ScalettoLib.this.dsl.-⚬ ScalettoLib.this.dsl.Res[S]
Exported from ScalettoLib

Variant of transformResourceAsync that does not take additional input and does not produce additional output.

Variant of transformResourceAsync that does not take additional input and does not produce additional output.

Attributes

def tryAcquire[A, R, B, E](acquire: Scaletto.this.ScalaFun[A, Either[E, (R, B)]], release: Option[Scaletto.this.ScalaFun[R, Unit]]): Scaletto.this.Val[A] Scaletto.this.-⚬ (Scaletto.this.Val[E] Scaletto.this.|+| (Scaletto.this.Res[R] Scaletto.this.|*| Scaletto.this.Val[B]))
Exported from Scaletto
def tryAcquire[A, R, B, E](acquire: A => Either[E, (R, B)], release: Option[R => Unit]): Scaletto.this.Val[A] Scaletto.this.-⚬ (Scaletto.this.Val[E] Scaletto.this.|+| (Scaletto.this.Res[R] Scaletto.this.|*| Scaletto.this.Val[B]))
Exported from Scaletto

Acquires a resource of type R. Might fail with an error of type E.

Acquires a resource of type R. Might fail with an error of type E.

Type parameters

A

parameters of the acquire function

B

additional data produced by acquiring the resource

E

type of the error

R

type of the resource

Value parameters

release

called to release the resource in case of a crash. None means no cleanup is needed

Attributes

def tryEffectAcquire[R, A, S, B, E](f: Scaletto.this.ScalaFun[(R, A), Either[E, (S, B)]], release: Option[Scaletto.this.ScalaFun[S, Unit]]): (Scaletto.this.Res[R] Scaletto.this.|*| Scaletto.this.Val[A]) Scaletto.this.-⚬ (Scaletto.this.Res[R] Scaletto.this.|*| (Scaletto.this.Val[E] Scaletto.this.|+| (Scaletto.this.Res[S] Scaletto.this.|*| Scaletto.this.Val[B])))
Exported from Scaletto
def tryEffectAcquireWr[R, A, S, E](f: ScalettoLib.this.dsl.ScalaFun[(R, A), Either[E, S]], release: Option[ScalettoLib.this.dsl.ScalaFun[S, Unit]]): (ScalettoLib.this.dsl.Res[R] ScalettoLib.this.dsl.|*| ScalettoLib.this.dsl.Val[A]) ScalettoLib.this.dsl.-⚬ (ScalettoLib.this.dsl.Res[R] ScalettoLib.this.dsl.|*| (ScalettoLib.this.dsl.Val[E] ScalettoLib.this.dsl.|+| ScalettoLib.this.dsl.Res[S]))
Exported from ScalettoLib
def trySplitResource[R, A, S, T, B, E](f: (R, A) => Either[E, (S, T, B)], release1: Option[S => Unit], release2: Option[T => Unit]): (Scaletto.this.Res[R] Scaletto.this.|*| Scaletto.this.Val[A]) Scaletto.this.-⚬ (Scaletto.this.Val[E] Scaletto.this.|+| (Scaletto.this.Res[S] Scaletto.this.|*| Scaletto.this.Res[T] Scaletto.this.|*| Scaletto.this.Val[B]))
Exported from Scaletto
def trySplitResource[R, A, S, T, B, E](f: Scaletto.this.ScalaFun[(R, A), Either[E, (S, T, B)]], release1: Option[Scaletto.this.ScalaFun[S, Unit]], release2: Option[Scaletto.this.ScalaFun[T, Unit]]): (Scaletto.this.Res[R] Scaletto.this.|*| Scaletto.this.Val[A]) Scaletto.this.-⚬ (Scaletto.this.Val[E] Scaletto.this.|+| (Scaletto.this.Res[S] Scaletto.this.|*| Scaletto.this.Res[T] Scaletto.this.|*| Scaletto.this.Val[B]))
Exported from Scaletto
def trySplitResourceAsync[R, A, S, T, B, E](f: (R, A) => Async[Either[E, (S, T, B)]], release1: Option[S => Async[Unit]], release2: Option[T => Async[Unit]]): (Scaletto.this.Res[R] Scaletto.this.|*| Scaletto.this.Val[A]) Scaletto.this.-⚬ (Scaletto.this.Val[E] Scaletto.this.|+| (Scaletto.this.Res[S] Scaletto.this.|*| Scaletto.this.Res[T] Scaletto.this.|*| Scaletto.this.Val[B]))
Exported from Scaletto
def tryTransformResource[R, A, S, B, E](f: (R, A) => Either[E, (S, B)], release: Option[S => Unit]): (Scaletto.this.Res[R] Scaletto.this.|*| Scaletto.this.Val[A]) Scaletto.this.-⚬ (Scaletto.this.Val[E] Scaletto.this.|+| (Scaletto.this.Res[S] Scaletto.this.|*| Scaletto.this.Val[B]))
Exported from Scaletto

Transforms a resource into a resource of (possibly) different type. Might fail with an error of type E.

Transforms a resource into a resource of (possibly) different type. Might fail with an error of type E.

Type parameters

A

additional parameter of the transformation

B

additional output of the transformation

E

type of the error

R

type of the input resource

S

type of the output resource

Value parameters

f

the transformation function. It receives the input resource and additional input of type A. It returns either an error of type E or the new resource and additional output of type B. In case the transformation results in an error, the original resource is ''not'' released automatically— the passing of the original resource R to the transformation function f indicates transfer of responsibility for the resource to the function f.

release

called to release the new resource in case of a crash. None means no cleanup is needed

Attributes

def tryTransformResource[R, A, S, B, E](f: Scaletto.this.ScalaFun[(R, A), Either[E, (S, B)]], release: Option[Scaletto.this.ScalaFun[S, Unit]]): (Scaletto.this.Res[R] Scaletto.this.|*| Scaletto.this.Val[A]) Scaletto.this.-⚬ (Scaletto.this.Val[E] Scaletto.this.|+| (Scaletto.this.Res[S] Scaletto.this.|*| Scaletto.this.Val[B]))
Exported from Scaletto
def tryTransformResourceAsync[R, A, S, B, E](f: (R, A) => Async[Either[E, (S, B)]], release: Option[S => Async[Unit]]): (Scaletto.this.Res[R] Scaletto.this.|*| Scaletto.this.Val[A]) Scaletto.this.-⚬ (Scaletto.this.Val[E] Scaletto.this.|+| (Scaletto.this.Res[S] Scaletto.this.|*| Scaletto.this.Val[B]))
Exported from Scaletto
def unContrapositive[A, B](f: Puro.this.-[A] Puro.this.-⚬ Puro.this.-[B]): B Puro.this.-⚬ A
Exported from Puro
def unInvertClosure[A, B]: (A Puro.this.=⚬ B) Puro.this.-⚬ Puro.this.-[B Puro.this.=⚬ A]
Exported from Puro
def unInvertOne: Puro.this.-[Puro.this.One] Puro.this.-⚬ Puro.this.One
Exported from Puro
def uncurry[A, B, C](f: A Puro.this.-⚬ (B Puro.this.=⚬ C)): (A Puro.this.|*| B) Puro.this.-⚬ C
Exported from Puro
def unliftBoolean: ScalettoLib.this.puroLib.Bool ScalettoLib.this.dsl.-⚬ ScalettoLib.this.dsl.Val[Boolean]
Exported from ScalettoLib
def unliftEither[A, B]: (Scaletto.this.Val[A] Scaletto.this.|+| Scaletto.this.Val[B]) Scaletto.this.-⚬ Scaletto.this.Val[Either[A, B]]
Exported from Scaletto
def unliftNegPair[A, B]: (Scaletto.this.Neg[A] Scaletto.this.|*| Scaletto.this.Neg[B]) Scaletto.this.-⚬ Scaletto.this.Neg[(A, B)]
Exported from Scaletto
def unliftPair[A, B]: (Scaletto.this.Val[A] Scaletto.this.|*| Scaletto.this.Val[B]) Scaletto.this.-⚬ Scaletto.this.Val[(A, B)]
Exported from Scaletto
def unpack[F[_]]: Puro.this.Rec[F] Puro.this.-⚬ F[Puro.this.Rec[F]]
Exported from Puro

Unpacks one level of a recursive type definition.

Unpacks one level of a recursive type definition.

Attributes

def unpackDemand[F[_]]: Puro.this.-[Puro.this.Rec[F]] Puro.this.-⚬ Puro.this.-[F[Puro.this.Rec[F]]]
Exported from Puro
def unveilSequentially[A, Ā, B](using ev: PuroLib.this.Dual[A, Ā]): (A PuroLib.this.dsl.|*| B) PuroLib.this.dsl.-⚬ (Ā PuroLib.this.dsl.=⚬ B)
Exported from PuroLib

Given A and B concurrently (A |*| B), we can suggest that A be consumed before B by turning it into Ā =⚬ B, where Ā is the dual of A.

Given A and B concurrently (A |*| B), we can suggest that A be consumed before B by turning it into Ā =⚬ B, where Ā is the dual of A.

Attributes

export valNegDuality[A]
Exported from ScalettoLib
def zapPremises[A, Ā, B, C](using ev: PuroLib.this.Dual[A, Ā]): ((A PuroLib.this.dsl.=⚬ B) PuroLib.this.dsl.|*| (Ā PuroLib.this.dsl.=⚬ C)) PuroLib.this.dsl.-⚬ (B PuroLib.this.dsl.|*| C)
Exported from PuroLib
final type |&| = dsl.|&|
Exported from Puro
final val |&|: PuroLib.this.|&|
Exported from PuroLib
Exported from Puro
final type |*| = dsl.|*|
Exported from Puro
final type |+| = dsl.|+|
Exported from Puro
final val |+|: PuroLib.this.|+|
Exported from PuroLib
final type || = dsl.||
Exported from Puro
def ΛI[A, B, C, D](f: A PuroLib.this.dsl.-⚬ (B PuroLib.this.dsl.|*| C)): (A PuroLib.this.dsl.|*| D) PuroLib.this.dsl.-⚬ (B PuroLib.this.dsl.|*| (C PuroLib.this.dsl.|*| D))
Exported from PuroLib

Λ is the uppercase Greek letter lambda.

Λ is the uppercase Greek letter lambda.

Attributes

val λ: Puro.this.LambdaOps
Exported from Puro
final type = dsl.|+|
Exported from Puro
final type = dsl.|*|
Exported from Puro