Constructors for expressions
Attributes
- Companion
- class
- Source
- Expr.scala
- Graph
-
- Supertypes
- Self type
-
Expr.type
Members list
Value members
Concrete methods
Creates an expression that will construct the value x
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 '{ $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
- 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
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