Expr (original) (raw)
Creates an expression that will construct the value x
Creates an expression that will construct the value x
Attributes
Source
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
Source
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 '{ <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>s</mi><mn>1</mn><mo separator="true">;</mo></mrow><annotation encoding="application/x-tex">s1; </annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8389em;vertical-align:-0.1944em;"></span><span class="mord mathnormal">s</span><span class="mord">1</span><span class="mpunct">;</span></span></span></span>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 '{ <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>s</mi><mn>1</mn><mo separator="true">;</mo></mrow><annotation encoding="application/x-tex">s1; </annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8389em;vertical-align:-0.1944em;"></span><span class="mord mathnormal">s</span><span class="mord">1</span><span class="mpunct">;</span></span></span></span>s2; ...; $e }
.
Attributes
Source
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
Source
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
Source
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
Source
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
Source
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
Attributes
Source
Find a given instance of type T
in the current scope, while excluding certain symbols from the initial implicit search. 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, while excluding certain symbols from the initial implicit search. Return 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 ignored
list.
Source
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.
Attributes
Source