Expr

object Expr

Constructors for expressions

Companion:
class
Source:
Expr.scala
class Object
trait Matchable
class Any
Expr.type

Value members

Concrete methods

def apply[T](x: T)(using ToExpr[T])(using Quotes): Expr[T]

Creates an expression that will construct the value x

Creates an expression that will construct the value x

Source:
Expr.scala
def betaReduce[T](expr: Expr[T])(using Quotes): Expr[T]

e.betaReduce returns an expression that is functionally equivalent to e, however if e is of the form ((y1, ..., yn) => e2)(e1, ..., en) then it optimizes this the top most call by returning the result of beta-reducing the application. Otherwise returns expr.

e.betaReduce returns an expression that is functionally equivalent to e, however if e is of the form ((y1, ..., yn) => e2)(e1, ..., en) then it optimizes this the top most call by returning the result of beta-reducing the application. Otherwise returns expr.

To retain semantics the argument ei is bound as val yi = ei and by-name arguments to def yi = ei. Some bindings may be elided as an early optimization.

Source:
Expr.scala
def block[T](statements: List[Expr[Any]], expr: Expr[T])(using Quotes): Expr[T]

Returns an expression containing a block with the given statements and ending with the expression Given list of statements s1 :: s2 :: ... :: Nil and an expression e the resulting expression will be equivalent to '{ $s1; $s2; ...; $e }.

Returns an expression containing a block with the given statements and ending with the expression Given list of statements s1 :: s2 :: ... :: Nil and an expression e the resulting expression will be equivalent to '{ $s1; $s2; ...; $e }.

Source:
Expr.scala
def ofList[T](xs: Seq[Expr[T]])(using Type[T])(using Quotes): Expr[List[T]]

Creates an expression that will construct a copy of this list

Creates an expression that will construct a copy of this list

Transforms a list of expression List(e1, e2, ...) where ei: Expr[T] to an expression equivalent to '{ List($e1, $e2, ...) } typed as an Expr[List[T]]

Source:
Expr.scala
def ofSeq[T](xs: Seq[Expr[T]])(using Type[T])(using Quotes): Expr[Seq[T]]

Creates an expression that will construct a copy of this sequence

Creates an expression that will construct a copy of this sequence

Transforms a sequence of expression Seq(e1, e2, ...) where ei: Expr[T] to an expression equivalent to '{ Seq($e1, $e2, ...) } typed as an Expr[Seq[T]]

Source:
Expr.scala
def ofTuple[T <: Tuple : Type](tup: T)(implicit evidence$1: IsMappedBy[Expr][T], evidence$2: Type[T], Quotes): Expr[InverseMap[T, Expr]]

Given a tuple of the form (Expr[A1], ..., Expr[An]), outputs a tuple Expr[(A1, ..., An)].

Given a tuple of the form (Expr[A1], ..., Expr[An]), outputs a tuple Expr[(A1, ..., An)].

Source:
Expr.scala
def ofTupleFromSeq(seq: Seq[Expr[Any]])(using Quotes): Expr[Tuple]

Creates an expression that will construct a copy of this tuple

Creates an expression that will construct a copy of this tuple

Transforms a sequence of expression Seq(e1, e2, ...) where ei: Expr[Any] to an expression equivalent to '{ ($e1, $e2, ...) } typed as an Expr[Tuple]

Source:
Expr.scala
def summon[T](using Type[T])(using Quotes): Option[Expr[T]]

Find a given instance of type T in the current scope. Return Some containing the expression of the implicit or None if implicit resolution failed.

Find a given instance of type T in the current scope. Return Some containing the expression of the implicit or None if implicit resolution failed.

Type parameters:
T

type of the implicit parameter

Source:
Expr.scala
def unapply[T](x: Expr[T])(using FromExpr[T])(using Quotes): Option[T]

Get Some of a copy of the value if the expression contains a literal constant or constructor of T. Otherwise returns None.

Get Some of a copy of the value if the expression contains a literal constant or constructor of T. Otherwise returns None.

Usage:

case '{ ... ${expr @ Expr(value)}: T ...} =>
  // expr: Expr[T]
  // value: T

To directly get the value of an expression expr: Expr[T] consider using expr.value/expr.valueOrError instead.

Source:
Expr.scala