InvertDSL
Type members
Classlikes
Types
Inherited types
Libretto arrow, also called a ''component'' or a ''linear function''.
Libretto arrow, also called a ''component'' or a ''linear function''.
┏━━━━━━━━━━┓
┞───┐ ┞───┐
╎ A │ ╎ B │
┟───┘ ┟───┘
┗━━━━━━━━━━┛
In A -⚬ B
, we say that the ''in-port'' is of type A
and the ''out-port'' is of type B
.
Note that the distinction between the in-port and the out-port is only formal. Information or resources
may flow in and out through both the in-port and the out-port.
"Linear" means that each input is ''consumed'' exactly once, in particular, it cannot be ignored or used twice.
- Inherited from
- CoreDSL
Signal that travels in the direction of -⚬, i.e. the positive direction. It may signal completion of a (potentially effectful) computation. It cannot be ignored. (If this signal was the only handle to an (effectful) computation, ignoring it would mean losing track of that computation, which is considered to be a resource leak.)
Signal that travels in the direction of -⚬, i.e. the positive direction. It may signal completion of a (potentially effectful) computation. It cannot be ignored. (If this signal was the only handle to an (effectful) computation, ignoring it would mean losing track of that computation, which is considered to be a resource leak.)
- Inherited from
- CoreDSL
Signal that travels in the direction opposite to -⚬, i.e. the negative direction. It may signal completion of a (potentially effectful) computation. It cannot be ignored. (If this signal was the only handle to an (effectful) computation, ignoring it would mean losing track of that computation, which is considered to be a resource leak.)
Signal that travels in the direction opposite to -⚬, i.e. the negative direction. It may signal completion of a (potentially effectful) computation. It cannot be ignored. (If this signal was the only handle to an (effectful) computation, ignoring it would mean losing track of that computation, which is considered to be a resource leak.)
- Inherited from
- CoreDSL
Signal that travels in the direction opposite to -⚬, i.e. the negative direction. Unlike Need, it cannot be the only handle to an effectful computation. As such, it can be ignored, e.g. as the losing contestant in selectPair.
Signal that travels in the direction opposite to -⚬, i.e. the negative direction. Unlike Need, it cannot be the only handle to an effectful computation. As such, it can be ignored, e.g. as the losing contestant in selectPair.
- Inherited from
- CoreDSL
Choice between A
and B
.
The consumer chooses whether to get A
or B
(but can get only one of them).
The producer has to be ready to provide either of them.
Choice between A
and B
.
The consumer chooses whether to get A
or B
(but can get only one of them).
The producer has to be ready to provide either of them.
- Inherited from
- CoreDSL
Concurrent pair. Also called a ''tensor product'' or simply ''times''.
Concurrent pair. Also called a ''tensor product'' or simply ''times''.
- Inherited from
- CoreDSL
Either A
or B
. Analogous to scala.Either.
Whether it is going to be A
or B
is decided by the producer.
The consumer has to be ready to handle either of the two cases.
Either A
or B
. Analogous to scala.Either.
Whether it is going to be A
or B
is decided by the producer.
The consumer has to be ready to handle either of the two cases.
- Inherited from
- CoreDSL
Value members
Abstract methods
Concrete methods
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_|+|.
Converts a demand for choice to a demand of the chosen side. Alias for distributeInversionInto_|&|.
Converts a demand for choice to a demand of the chosen side. Alias for distributeInversionInto_|&|.
Converts choice of demands to demand of either. Alias for factorInversionOutOf_|&|.
Converts choice of demands to demand of either. Alias for factorInversionOutOf_|&|.
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_|+|.
Inherited methods
Factor out the factor A
on the left of both summands.
Factor out the factor A
on the left of both summands.
- Inherited from
- CoreDSL
Factor out the factor C
on the right of both summands.
Factor out the factor C
on the right of both summands.
- Inherited from
- CoreDSL
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.
- Inherited from
- CoreDSL
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.
- Inherited from
- CoreDSL
Turn a function into a function object.
Turn a function into a function object.
- Inherited from
- ClosedDSL
Hides one level of a recursive type definition.
Hides one level of a recursive type definition.
- Inherited from
- CoreDSL
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 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.
Unpacks one level of a recursive type definition.
Unpacks one level of a recursive type definition.
- Inherited from
- CoreDSL
Used to define a linear function A -⚬ B
in a point-full style, i.e. as a lambda expression.
Used to define a linear function A -⚬ B
in a point-full style, i.e. as a lambda expression.
Recall that when defining A -⚬ B
, we never get a hold of a: A
as a Scala value. However,
by using this method we get a hold of a: $[A]
, a placeholder variable, and construct the result
expression $[B]
.
This method then inspects how the input variable a: $[A]
is used in the result $[B]
and
infers a (point-free) construction of A -⚬ B
.