Attributes
- Companion:
- object
- Graph
- Supertypes
- class Objecttrait Matchableclass Any
- Known subtypes
- Self type
Members list
Value members
Concrete methods
How to handle arguments? We want keep evaluation order from left to right, so, imagine we have function f(a1,a2,a3) and a2 is async, a1, a3 - sync. we will transform this to
How to handle arguments? We want keep evaluation order from left to right, so, imagine we have function f(a1,a2,a3) and a2 is async, a1, a3 - sync. we will transform this to
{ val arg1 = a1;
transform(a2).flatMap( x =>
{ val arg2 = x;
val arg3 = a3;
f(arg1, arg2, arg3)
} }
more generally we at first generate block: { arg1 = a1; ..... argN = aN; f(arg1,...argN) } and then transform one, knowing that all arguments to f are sync (of course, if all arguments are sync, we just call f(arg1,... arg2) without all this machinery)
Attributes
- applyTerm
= Apply(fun, args) - origin apply
- args
- first argument list
- fun
- function to apply (with type-paerameters)
- tails
- next argument lists if any
- unpure
- if true, that this is call from shifted substitution, which is already return F[_] by design.
applyTerm = Apply(fun, args) fun = TypeApply(obj,targs)
applyTerm = Apply(fun, args) fun = TypeApply(obj,targs)
Attributes
case Apply(fun,args) transform application
case Apply(fun,args) transform application
tails -- list of prepared sequence of curried arguments.