Lambda
extends Object with SerializableLambda expression extractor
Supertypes
Object, SerializableMembers
def
unapply
[F, Args, Res, G] ( expr: Expr[F] ) ( implicit qctx: QuoteContext , tf: TupledFunction[F,Args => Res] , tg: TupledFunction[G,Map[Args,Expr[T]] => Expr[Res]] , functionType: Type[F] ) : Option[G]case Lambda(fn)
matches a lambda by lifting the function from S => T
to Expr[S] => Expr[T]
.
As the body may (will) contain references to the paramter,
case Lambda(fn)
matches a lambda by lifting the function from S => T
to Expr[S] => Expr[T]
.
As the body may (will) contain references to the paramter, body
is a function that recieves those arguments as Expr
.
Once this function is applied the result will be the body of the lambda with all references to the parameters replaced.
If body
is of type (T1, T2, ...) => R
then body will be of type (Expr[T1], Expr[T2], ...) => Expr[R]
.
'{ (x: Int) => println(x) } match
case Lambda(body) =>
// where `body` is: (x: Expr[Int]) => '{ println($x) }
body('{3}) // returns '{ println(3) }