Closed iamrecursion closed 4 years ago
Some notes on the proposed implementation:
ArgumentSchema
). It should have an array with the oversaturated arguments as CallArgumentInfo
.CallOptimiserNode
down into CachedArgumentSorterNode
, as well as the corresponding logic.ArgumentSorterNode
, with a schema containing just the oversaturated arguments. execute
in cached, we can (in the oversaturated case) execute
on the child sorter. Function
itself will need an additional array to track the oversaturated arguments, initialized to null
.
Summary
While support for currying has been implemented to comply with luna/enso#18, it currently doesn't handle the case where a function is applied to more arguments than it takes on its own. This isn't intuitively an issue, but becomes one when functions can return functions, to which the remaining arguments should be applied.
Value
Implementing this will complete Enso's support for curried function application, and hence complete the set of tasks required to support the proper language semantics for function calls.
Specification
x=!!
, for example) should be retained and should be applied to a returned function. If the returned function has no argument by that name, then it becomes an error as long as that argument would be applied to it.Acceptance Criteria & Test Cases