cps

package cps

Type members

Classlikes

object Async
abstract class AsyncCpsExpr[F[_], T](dm: Expr[CpsMonad[F]], prev: Seq[ExprTreeGen])(`evidence$7`: Type[F], `evidence$8`: Type[T]) extends CpsExpr[F, T]
case class AsyncMacroFlags(printCode: Boolean, printTree: Boolean, debugLevel: Int, allowShiftedLambda: Boolean, customValueDiscard: Boolean, warnValueDiscard: Boolean, automaticColoring: Boolean, muted: Boolean)
trait AsyncShift[T]
Companion
object
Companion
class
class AwaitValueDiscard[F[_], T] extends ValueDiscard[F[T]]

Marker interface for forcing monad evaluation before discard. Useful for pure effect monads.

Marker interface for forcing monad evaluation before discard. Useful for pure effect monads.

trait CpsAsyncMonad[F[_]] extends CpsTryMonad[F]

Interoperability with Future: allows async[F]{ .. awaitFuture ... }

Interoperability with Future: allows async[F]{ .. awaitFuture ... }

trait CpsAwaitable[F[_]]

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.

trait CpsExpr[F[_], T](monad: Expr[CpsMonad[F]], prev: Seq[ExprTreeGen])(`evidence$1`: Type[F], `evidence$2`: Type[T])
Companion
object
object CpsExpr
Companion
class
trait CpsFulfillingMonad[F[_]] extends CpsAsyncMonad[F]
trait CpsMonad[F[_]] extends CpsAwaitable[F]

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).

Companion
object
object CpsMonad
Companion
class
trait CpsMonadConversion[F[_], G[_]]
trait CpsMonadDynamicMemoizationAp[F[_], T, FT]
Companion
object
sealed trait CpsMonadMemoization[F[_]]
trait CpsProgressingMonad[F[_]] extends CpsAsyncMonad[F]
trait CpsSchedulingMonad[F[_]] extends CpsAsyncMonad[F]

Interoperability with Future: allows async[F]{ .. awaitFuture ... }

Interoperability with Future: allows async[F]{ .. awaitFuture ... }

trait CpsTryMonad[F[_]] extends CpsMonad[F]

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.

case class FlatMappedCpsExpr[F[_], S, T](monad: Expr[CpsMonad[F]], prev: Seq[ExprTreeGen], point: CpsExpr[F, S], mapping: Expr[S => F[T]])(`evidence$14`: Type[F], `evidence$15`: Type[S], `evidence$16`: Type[T]) extends AsyncCpsExpr[F, T]
case class GenericAsyncCpsExpr[F[_], T](dm: Expr[CpsMonad[F]], prev: Seq[ExprTreeGen], fLastExpr: Expr[F[T]])(`evidence$9`: Type[F], `evidence$10`: Type[T]) extends AsyncCpsExpr[F, T]
case class GenericSyncCpsExpr[F[_], T](dm: Expr[CpsMonad[F]], prev: Seq[ExprTreeGen], lastExpr: Expr[T], changed: Boolean)(`evidence$5`: Type[F], `evidence$6`: Type[T]) extends SyncCpsExpr[F, T]
case class MappedCpsExpr[F[_], S, T](monad: Expr[CpsMonad[F]], prev: Seq[ExprTreeGen], point: CpsExpr[F, S], mapping: Expr[S => T])(`evidence$11`: Type[F], `evidence$12`: Type[S], `evidence$13`: Type[T]) extends AsyncCpsExpr[F, T]
class StatementExprTreeGen(using `x$1`: Quotes)(stat: Statement, changed: Boolean) extends ExprTreeGen
abstract class SyncCpsExpr[F[_], T](dm: Expr[CpsMonad[F]], prev: Seq[ExprTreeGen])(`evidence$3`: Type[F], `evidence$4`: Type[T]) extends CpsExpr[F, T]
case class TransformationContext[F[_], T](patternCode: Expr[T], patternType: Type[T], monad: Expr[CpsMonad[F]], memoization: Option[Memoization[F]], flags: AsyncMacroFlags, marker: TransformationContextMarker, nesting: Int, parent: Option[TransformationContext[_[_], _]])
Companion
object
Companion
object
case class UnitCpsExpr[F[_]](monad: Expr[CpsMonad[F]], prev: Seq[ExprTreeGen], changed: Boolean)(`evidence$17`: Type[F], `x$4`: Quotes) extends SyncCpsExpr[F, Unit]
case class UnsealExprTreeGen[T](expr: Expr[T], changed: Boolean) extends ExprTreeGen
trait ValueDiscard[T]

when customValueDiscard is on, value can be discarded only for types T for which CustomValueDiscard is enabled. And ValueDiscard.apply is called when value is discarded.

when customValueDiscard is on, value can be discarded only for types T for which CustomValueDiscard is enabled. And ValueDiscard.apply is called when value is discarded.

Companion
object
object ValueDiscard
Companion
class

Value members

Concrete methods

inline def async[F[_]](using inline am: CpsMonad[F]): InferAsyncArg[F]
@compileTimeOnly("await should be inside async block")
def await[F[_], T](f: F[T])(using am: CpsAwaitable[F]): T

Givens