Inherited from CurriedWithTypeParameters
Inherited by implicit conversion any2stringadd from
Curried to any2stringadd[Curried]
Inherited by implicit conversion StringFormat from
Curried to StringFormat[Curried]
Inherited by implicit conversion Ensuring from
Curried to Ensuring[Curried]
Inherited by implicit conversion ArrowAssoc from
Curried to ArrowAssoc[Curried]
A marker trait that enables curried varargs.
Given a function call
f(a, b, c)
, whenf
is a subtype of Curried, it should be rewritten tof.applyBegin.applyNext(a).applyNext(b).applyNext(c).applyEnd
.Optionally, some arguments to a Curried call may be a sequence argument marked as
_*
. Given a function callf(p1, s1: _*, p2)
, when translating it to the curried form, the sequence argument will becomes afoldLeft
call.Unlike traditional repeated parameters, which restrict the sequence argument at the last position, sequence arguments in a curried call are allowed at any position.
When a Curried is invoked with some type arguments, those type arguments will be moved to the
applyBegin
method. Therefore,List[Int](1 to 3: _*)
should be translated to(1 to 3).foldLeft(List.applyBegin[Int])(_.applyNext(_)).applyEnd
.Fast list builder