Constructors for expressions.
Attributes
Members list
Value members
Concrete methods
Creates an expression that will construct the value x.
Creates an expression that will construct the value x.
Attributes
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 the top most call by returning the result of beta-reducing the application. Similarly, all outermost curried function applications will be beta-reduced, if possible. 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 the top most call by returning the result of beta-reducing the application. Similarly, all outermost curried function applications will be beta-reduced, if possible. 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.
Example:
((a: Int, b: Int) => a + b).apply(x, y)
will be reduced to
val a = x
val b = y
a + b
Generally:
([X1, Y1, ...] => (x1, y1, ...) => ... => [Xn, Yn, ...] => (xn, yn, ...) => f[X1, Y1, ..., Xn, Yn, ...](x1, y1, ..., xn, yn, ...))).apply[Tx1, Ty1, ...](myX1, myY1, ...)....apply[Txn, Tyn, ...](myXn, myYn, ...)
will be reduced to
type X1 = Tx1
type Y1 = Ty1
...
val x1 = myX1
val y1 = myY1
...
type Xn = Txn
type Yn = Tyn
...
val xn = myXn
val yn = myYn
...
f[X1, Y1, ..., Xn, Yn, ...](x1, y1, ..., xn, yn, ...)
Attributes
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 }.
Attributes
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]]
Attributes
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]]
Attributes
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)].
Attributes
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]
Attributes
Finds a given instance of type T in the current scope. Returns Some containing the expression of the implicit or None if implicit resolution failed.
Finds a given instance of type T in the current scope. Returns Some containing the expression of the implicit or None if implicit resolution failed.
Type parameters
- T
-
type of the implicit parameter
Attributes
Finds a given instance of type T in the current scope, while excluding certain symbols from the initial implicit search. Returns Some containing the expression of the implicit or None if implicit resolution failed.
Finds a given instance of type T in the current scope, while excluding certain symbols from the initial implicit search. Returns Some containing the expression of the implicit or None if implicit resolution failed.
Type parameters
- T
-
type of the implicit parameter
Value parameters
- ignored
-
Symbols ignored during the initial implicit search
Attributes
- Note
-
if the found given requires additional search for other given instances, this additional search will NOT exclude the symbols from the
ignoredlist.
Gets Some of a copy of the value if the expression contains a literal constant or constructor of T. Otherwise returns None.
Gets 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.