Functionを分解し、 vparamsを取得しました。これで、次のように呼び出すことができます。
case class Action(f: Function, ts: List[TypeName]) {
def render(ruleName: String): Expr[Unit] = c.Expr[Unit](q"""
val p = ${c.prefix}
val value1 = p.valueStack.pop().asInstanceOf[${ts(0)}]
val value2 = p.valueStack.pop().asInstanceOf[${ts(1)}]
p.valueStack.push($f(value1, value2))
""")
}
fは、コンパイル時に既知の任意の数のパラメーターです。
p.valueStackから関数fにts.countパラメータを渡す方法は?