LambdaModule

Methods of the module object val Lambda

Source:
Quotes.scala
class Object
trait Matchable
class Any

Value members

Abstract methods

def apply(owner: Symbol, tpe: MethodType, rhsFn: (Symbol, List[Tree]) => Tree): Block

Generates a lambda with the given method type.

Generates a lambda with the given method type.

Block((DefDef(_, _, params :: Nil, _, Some(rhsFn(meth, paramRefs)))) :: Nil, Closure(meth, _))

Usage:

val mtpe = MethodType(List("arg1"))(_ => List(TypeRepr.of[Int]), _ => TypeRepr.of[Int])
Lambda(owner, mtpe, {
  case (methSym, List(arg1: Term)) =>
    ValDef.let(methSym, f(arg1)) { ... }
  }
)

Usage with quotes:

val mtpe = MethodType(List("arg1"))(_ => List(TypeRepr.of[Int]), _ => TypeRepr.of[Int])
Lambda(owner, mtpe, {
  case (methSym, List(arg1: Term)) =>
    given Quotes = methSym.asQuotes
    '{ ... }
  }
)
Value parameters:
owner:

owner of the generated meth symbol

rhsFn:

Function that receives the meth symbol and the a list of references to the params

tpe:

Type of the definition

Source:
Quotes.scala
def unapply(tree: Block): Option[(List[ValDef], Term)]

Matches a lambda definition of the form

Matches a lambda definition of the form

Block((DefDef(_, _, params :: Nil, _, Some(body))) :: Nil, Closure(meth, _))

Extracts the parameter definitions and body.

Source:
Quotes.scala