[swift-evolution] [Review] SE-0111: Remove type system significance of function argument labels

Austin Zheng austinzheng at gmail.com
Fri Jul 1 22:22:54 CDT 2016


> On Jul 1, 2016, at 8:15 PM, James Froggatt via swift-evolution <swift-evolution at swift.org> wrote:
> 
> ‘If I understand the other discussions regarding the evolution of Swift's function arguments model, the similarity to tuples with labeled components is a historical artifact and now merely coincidental.’

It's been stated repeatedly in this thread and many others that modeling argument lists as tuples is a non-goal.

> 
> Is it though? Couldn't the current confusing situation of tuple labels in the type system be changed in the exact same way?

Tuple labels work the way you expect them to work: you can't assign an `(a: 1, b: 2)` to a variable of type `(x: Int, y: Int)`. There is nothing confusing about them, at least not in the same way that function types are.

> 
> Or are tuples destined to become nothing more than a historical artifact? If this is the case, then we might as well remove them now.

Tuples have many, many uses apart from modeling argument lists.

> 
> ------------ Begin Message ------------ 
> Group: gmane.comp.lang.swift.evolution 
> MsgID: <CAOw3ZebrvO92FRnv2XK1Y_+S2LqYvouo-fM46bPmuFfOF2P1Og at mail.gmail.com> 
> 
> On Thu, Jun 30, 2016 at 11:26 AM Chris Lattner via swift-evolution <
> swift-evolution-m3FHrko0VLzYtjvyW6yDsg at public.gmane.org> wrote:
> 
>> Hello Swift community,
>> 
>> The review of "SE-0111: Remove type system significance of function
>> argument labels" begins now and runs through July 4. The proposal is
>> available here:
>> 
>> 
>> https://github.com/apple/swift-evolution/blob/master/proposals/0111-remove-arg-label-type-significance.md
>> 
>> Reviews are an important part of the Swift evolution process. All reviews
>> should be sent to the swift-evolution mailing list at
>> 
>> https://lists.swift.org/mailman/listinfo/swift-evolution
>> 
>> or, if you would like to keep your feedback private, directly to the
>> review manager.
>> 
>> What goes into a review?
>> 
>> The goal of the review process is to improve the proposal under review
>> through constructive criticism and contribute to the direction of Swift.
>> When writing your review, here are some questions you might want to answer
>> in your review:
>> 
>> * What is your evaluation of the proposal?
>> 
> 
> +1. I'm in agreement with others in this thread who say that the labels are
> parts of the *name* of the function, not parts of its *type*. If I
> understand the other discussions regarding the evolution of Swift's
> function arguments model, the similarity to tuples with labeled components
> is a historical artifact and now merely coincidental.
> 
> The analogy to Objective-C here is obvious, where you have selectors
> instead of functions. The selector is the "name" of the "function" and it
> contains all of the parts, not just the base name.
> 
> Swift function names to me are like German separable verbs. Even when
> they're split across the sentence with multiple words in-between, the
> prefix is still considered part of that verb, not a separate word/concept.
> 
> 
> 
>> * Is the problem being addressed significant enough to warrant a
>> change to Swift?
>> 
> 
> Yes.
> 
> 
> 
>> * Does this proposal fit well with the feel and direction of Swift?
>> 
> 
> Yes. This feels like a natural follow-up to SE-0021, which allowed the use
> of argument names to differentiate between overloads with the same argument
> types at the same positions. To me, this is another admission that the
> labels are part of the function's *name*.
> 
> 
> 
>> * If you have used other languages or libraries with a similar
>> feature, how do you feel that this proposal compares to those?
>> 
> 
> Aside from Objective-C mentioned above, the other languages I've used that
> have named/keyword arguments (like Python) are dynamic languages that treat
> the incoming argument list as a dictionary; in that case, the language
> design is significantly different and I can't draw an analogy between them.
> 
> 
>> * How much effort did you put into your review? A glance, a quick
>> reading, or an in-depth study?
>> 
> 
> Read the proposal and loosely followed the discussion.
> 
> 
>> 
>> More information about the Swift evolution process is available at
>> 
>> https://github.com/apple/swift-evolution/blob/master/process.md
>> 
>> Thank you,
>> 
>> -Chris Lattner
>> Review Manager
>> 
>> 
>> _______________________________________________
>> swift-evolution mailing list
>> swift-evolution-m3FHrko0VLzYtjvyW6yDsg at public.gmane.org
>> https://lists.swift.org/mailman/listinfo/swift-evolution
>> 
> 
> 
> 
> ------------- End Message ------------- 
> 
> 
> 
> From James F
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution



More information about the swift-evolution mailing list