SE-0111 established that Swift's type system would not allow function argument
labels to be expressed as part of a function type. As I've been working with
curried functions, I'm discovering an unintended consequence of this proposal
in that it strips curried functions of their external labels and the resulting
calls of their readability.
```
public func projected(
function f: @escaping (CGFloat) -> CGFloat) ->
(_ p0: CGPoint, _ p1: CGPoint) ->
(_ percent: CGFloat) -> CGPoint
{
```
Calling the first level of currying still reads acceptably:
```
let projectedFunction = projected(function: fToApply)
```
But after that, the enforced label-less arguments mean all further semantics
have to stay within the name of the assigned partially applied function symbol
and all arguments must be supplied without meaning, which is not in the spirit
of API guidelines or under the umbrella of Swiftiness:
```
let fixedFunction = projectedFunction(p0, p1)
let value = fixedFunction(0.2)
```
There's no way to give either the line segment start and end points or the
percent-of-progress arguments any labels. Further, Xcode/QuickHelp does not
provide any support for documenting the roles of each curried return type.
Could this be addressed specifically for currying or has the boat sailed
forever on this topic?
-- E
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution