Expr (original) (raw)

Creates an expression that will construct the value x

Creates an expression that will construct the value x

Attributes

Source

Expr.scala

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

Expr.scala

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

Expr.scala

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

Expr.scala

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

Expr.scala

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

Expr.scala

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

Expr.scala

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

Expr.scala

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

Expr.scala

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

Expr.scala