cps
Members list
Type members
Classlikes
AsynsShift is a marker base trait for typeclass, which provides 'shifted' variants of the hight-order methods
of T,
which called when we need to pass a cps-transformed function as an argument for this method.
AsynsShift is a marker base trait for typeclass, which provides 'shifted' variants of the hight-order methods
of T,
which called when we need to pass a cps-transformed function as an argument for this method.
The general convention is next:
- Let us have object
O
and methodm(f: A=>B):R
which accept hight-order argumentf: A=>B.
(for example - map in List). - If we want to defined transformation of argument for any monad F, we should define the
AsyncShift[O]
with methodm[F[_],...](o:O, m:CpsMonad[F])(f: A=>F[B])
. - Return type of this method can be F[R] or R or AsyncSubst[R].
Also we should define a given instance of AsyncShift[O], visible from our async block. I.e. implementation for our list will look as:
class MyShiftedList[T] extentds AsyncShift[List[T]] {
def map[F[_],S](m:CpsMonad[M], c:List[T])(f: T=>F[S]): F[List[T]] =
... // implementation here
}
transparent inline given myShiftedList[T]: AsyncShift[List[T]] = MyShiftedList[T]()
After this, you can freely use awaits inside "List.map":
async {
....
val fetched = uris.map(uri => await(fetch(uri)))
...
}
see https://rssh.github.io/dotty-cps-async/HighOrderFunctions.html
Attributes
- Companion:
- object
- Graph
- Supertypes
- class Objecttrait Matchableclass Any
- Known subtypes
- class ArrayOpsAsyncShift[A]class ListAsyncShift[A]class RangeAsyncShift[R]class OptionAsyncShift[T]class TryAsyncShift[T]object TryModuleAsyncShift.typeobject UsingAsyncShift.type
Companion object where defined given AsyncShift instances for Scala standard library objects.
Companion object where defined given AsyncShift instances for Scala standard library objects.
Attributes
- See also:
[cps.AsyncShift]
- Companion:
- trait
- Graph
- Supertypes
- class Objecttrait Matchableclass Any
- Self type
- AsyncShift.type
Marker interface for forcing monad evaluation before discard.
Useful for pure effect monads.
AwaitValueDiscard[F,T].apply(ft)
is transformed to await(ft)
during evaluation of async macro.
Marker interface for forcing monad evaluation before discard.
Useful for pure effect monads.
AwaitValueDiscard[F,T].apply(ft)
is transformed to await(ft)
during evaluation of async macro.
Attributes
- Graph
- Supertypes
Async Effect Monad
Async Effect Monad
Attributes
- Graph
- Supertypes
- trait CpsEffectMonad[F]trait CpsAsyncMonad[F]trait CpsTryMonad[F]trait CpsMonad[F]trait CpsAwaitable[F]class Objecttrait Matchableclass Any
- Known subtypes
- trait CpsConcurrentEffectMonad[F]
Monad, which is compatible with passing data via callbacks.
Monad, which is compatible with passing data via callbacks.
Interoperability with Future: allows
async[F]{ .. await[Future](..) ... }
Attributes
- Companion:
- object
- Graph
- Supertypes
- Known subtypes
- trait CpsAsyncEffectMonad[F]trait CpsConcurrentEffectMonad[F]trait CpsConcurrentMonad[F]trait CpsSchedulingMonad[F]class FutureAsyncMonadAPI
Attributes
- Companion:
- trait
- Graph
- Supertypes
- class Objecttrait Matchableclass Any
- Self type
- CpsAsyncMonad.type
Marker typeclass for wrappers, which we can await. Such traits can be not monads itself (for example, its impossible to set monad structure over js.Promise) but can be convertable into cps monads.
Marker typeclass for wrappers, which we can await. Such traits can be not monads itself (for example, its impossible to set monad structure over js.Promise) but can be convertable into cps monads.
Attributes
- Graph
- Supertypes
- class Objecttrait Matchableclass Any
- Known subtypes
- trait CpsMonad[F]class FutureAsyncMonadAPItrait CpsEffectMonad[F]trait CpsAsyncEffectMonad[F]trait CpsConcurrentEffectMonad[F]trait CpsMonadInstanceContext[F]object FreeCpsMonad.typetrait CpsTryMonad[F]trait CpsAsyncMonad[F]trait CpsConcurrentMonad[F]trait CpsSchedulingMonad[F]
Attributes
- Graph
- Supertypes
- trait CpsConcurrentMonad[F]trait CpsAsyncMonad[F]trait CpsTryMonad[F]trait CpsMonad[F]trait CpsAwaitable[F]class Objecttrait Matchableclass Any
Marker trait for concurrent effect monads.
Marker trait for concurrent effect monads.
Attributes
- Graph
- Supertypes
- trait CpsAsyncEffectMonad[F]trait CpsEffectMonad[F]trait CpsConcurrentMonad[F]trait CpsAsyncMonad[F]trait CpsTryMonad[F]trait CpsMonad[F]trait CpsAwaitable[F]class Objecttrait Matchableclass Any
Monad, where we can define an effect of starting operation in different execution flow.
Monad, where we can define an effect of starting operation in different execution flow.
Attributes
- Companion:
- object
- Graph
- Supertypes
- trait CpsAsyncMonad[F]trait CpsTryMonad[F]trait CpsMonad[F]trait CpsAwaitable[F]class Objecttrait Matchableclass Any
- Known subtypes
Attributes
- Companion:
- trait
- Graph
- Supertypes
- class Objecttrait Matchableclass Any
- Self type
- CpsConcurrentMonad.type
Base trait of CpsContextMonad which provide Ctx
as a monad context
Mixin this trait into your CosMonad in cases, when you monad have internal API
and you potentially want to use moand context as generic type.
Base trait of CpsContextMonad which provide Ctx
as a monad context
Mixin this trait into your CosMonad in cases, when you monad have internal API
and you potentially want to use moand context as generic type.
Attributes
- Graph
- Supertypes
- Known subtypes
- class FutureAsyncMonadAPI
Marker trait, which mark effect monad, where actual evaluation of expression happens after building a monad, during effect evaluation stage.
Marker trait, which mark effect monad, where actual evaluation of expression happens after building a monad, during effect evaluation stage.
evaluation of expression inside async block always delayed.
Attributes
- Graph
- Supertypes
- Known subtypes
- trait CpsAsyncEffectMonad[F]trait CpsConcurrentEffectMonad[F]
Marker class which mean that CpsRuntimeAwait implemented in such way, that performance penalty in comparison with cps run is relative low and we can not to use cps transformation in async block for such monad.
Marker class which mean that CpsRuntimeAwait implemented in such way, that performance penalty in comparison with cps run is relative low and we can not to use cps transformation in async block for such monad.
Attributes
- Graph
- Supertypes
Basic CpsMonad operations. Implementing this typeclass is enough to use async/await with supports of basic control-flow constructions (if, loops, but no exceptions).
Basic CpsMonad operations. Implementing this typeclass is enough to use async/await with supports of basic control-flow constructions (if, loops, but no exceptions).
Attributes
- Companion:
- object
- Graph
- Supertypes
- Known subtypes
- class FutureAsyncMonadAPItrait CpsEffectMonad[F]trait CpsAsyncEffectMonad[F]trait CpsConcurrentEffectMonad[F]trait CpsMonadInstanceContext[F]object FreeCpsMonad.typetrait CpsTryMonad[F]trait CpsAsyncMonad[F]trait CpsConcurrentMonad[F]trait CpsSchedulingMonad[F]
Base for context operations inside monad
Base for context operations inside monad
Attributes
- Graph
- Supertypes
- class Objecttrait Matchableclass Any
- Known subtypes
Attributes
- Graph
- Supertypes
- class Objecttrait Matchableclass Any
CpsMonadConversion -- conversion from F[_]
to G[_]
.
If the given instance of such morphism exists, then await[F]
can be used inside async[G]
CpsMonadConversion -- conversion from F[_]
to G[_]
.
If the given instance of such morphism exists, then await[F]
can be used inside async[G]
Attributes
- See also:
- Graph
- Supertypes
- class Objecttrait Matchableclass Any
Trait for minimal monad context, which provides an instance of CpsMonad. Mixin this trait into your monad in cases, when you monad have no internal API.
Trait for minimal monad context, which provides an instance of CpsMonad. Mixin this trait into your monad in cases, when you monad have no internal API.
Attributes
- Graph
- Supertypes
- Known subtypes
- object FreeCpsMonad.type
Attributes
- Graph
- Supertypes
How this monad can be memoized.
How this monad can be memoized.
Attributes
- Companion:
- object
- Graph
- Supertypes
- class Objecttrait Matchableclass Any
- Known subtypes
Attributes
- Companion:
- trait
- Graph
- Supertypes
- class Objecttrait Matchableclass Any
- Self type
- CpsMonadMemoization.type
marker trait for context with NOOP intercaprAwait operation
marker trait for context with NOOP intercaprAwait operation
Attributes
- Graph
- Supertypes
- Known subtypes
- class CpsMonadInstanceContextBody[F]class FutureContext
When this typeclass is implemented for a monad F, dotty-cps-async can use runtime await invocations for handling of high-order functions when shifted variants are not available.
When this typeclass is implemented for a monad F, dotty-cps-async can use runtime await invocations for handling of high-order functions when shifted variants are not available.
Attributes
- Graph
- Supertypes
- class Objecttrait Matchableclass Any
- Known subtypes
- trait CpsFastRuntimeAwait[F]
Monad, where we can spawn some event and be sure that one be evaluated, event if we drop result.
Monad, where we can spawn some event and be sure that one be evaluated, event if we drop result.
Interoperability with Future: allows
async[Future]{
...
await[F](..)
...
}
Attributes
- Companion:
- object
- Graph
- Supertypes
- trait CpsConcurrentMonad[F]trait CpsAsyncMonad[F]trait CpsTryMonad[F]trait CpsMonad[F]trait CpsAwaitable[F]class Objecttrait Matchableclass Any
- Known subtypes
- class FutureAsyncMonadAPI
Attributes
- Companion:
- trait
- Graph
- Supertypes
- class Objecttrait Matchableclass Any
- Self type
- CpsSchedulingMonad.type
If you monad supports this typeclass, than you can use try/catch/finally inside await.
If you monad supports this typeclass, than you can use try/catch/finally inside await.
Attributes
- Companion:
- object
- Graph
- Supertypes
- Known subtypes
- trait CpsAsyncMonad[F]trait CpsAsyncEffectMonad[F]trait CpsConcurrentEffectMonad[F]trait CpsConcurrentMonad[F]trait CpsSchedulingMonad[F]class FutureAsyncMonadAPIobject FreeCpsMonad.type
Attributes
- Companion:
- trait
- Graph
- Supertypes
- class Objecttrait Matchableclass Any
- Self type
- CpsTryMonad.type
When cps.customValueDiscard is on,
value can be discarded only for types T
for which exists ValueDiscard[T]
When cps.customValueDiscard is on,
value can be discarded only for types T
for which exists ValueDiscard[T]
Attributes
- Companion:
- object
- Graph
- Supertypes
- class Objecttrait Matchableclass Any
- Known subtypes
- class EmptyValueDiscard[T]
Attributes
- Companion:
- trait
- Graph
- Supertypes
- class Objecttrait Matchableclass Any
- Self type
- ValueDiscard.type
marker object for value discarding. When this object is imported into current scope, then discarding values inside async block is translated to summon[ValueDiscard[T]].apply()
marker object for value discarding. When this object is imported into current scope, then discarding values inside async block is translated to summon[ValueDiscard[T]].apply()
Attributes
- Graph
- Supertypes
- Self type
- customValueDiscard.type
marker object for enabling warning about discarding non-primitve values without custom discard.
marker object for enabling warning about discarding non-primitve values without custom discard.
Attributes
- Graph
- Supertypes
- Self type
- warnValueDiscard.type
Value members
Concrete methods
async block, which can contains awaits. better look on this as the first part of the next signature:
async block, which can contains awaits. better look on this as the first part of the next signature:
async[F](using CpsMonad[F])[T](inline body:T):F[T]
i.e. async return a transitional object, which accepts body and perform async transform with the given
CpsMonad[F]
.
Attributes
Generator syntax. usage:
Generator syntax. usage:
val s = asyncStream[fs.Stream[IO,Int]] { out =>
for(i <- 1 to N) out.emit(i)
}
Attributes
Pseudofunction, which can be used inside async block, to 'await' (i.e. receive value of t:T
from ft:F[T]
).
Pseudofunction, which can be used inside async block, to 'await' (i.e. receive value of t:T
from ft:F[T]
).
Attributes
Givens
Givens
marker object for value discarding. When this object is imported into current scope, then discarding values inside async block is translated to summon[ValueDiscard[T]].apply()
marker object for value discarding. When this object is imported into current scope, then discarding values inside async block is translated to summon[ValueDiscard[T]].apply()
Attributes
marker object for enabling warning about discarding non-primitve values without custom discard.
marker object for enabling warning about discarding non-primitve values without custom discard.