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

Matthew Johnson matthew at anandabits.com
Thu Jun 30 21:45:15 CDT 2016


> On Jun 30, 2016, at 9:36 PM, Jordan Rose via swift-evolution <swift-evolution at swift.org> wrote:
> 
> [Proposal: https://github.com/apple/swift-evolution/blob/master/proposals/0111-remove-arg-label-type-significance.md <https://github.com/apple/swift-evolution/blob/master/proposals/0111-remove-arg-label-type-significance.md> ]
> 
> This is my feeling as well. Argument labels are definitely part of the name of the function, but they aren’t part of the type. A few functions happen to have argument labels 
> 
> On future directions: I’m mildly in favor of allowing parameters and locals with closure type to have labels in the name: 
> 
> func map<Result>(_ transform(from:): (Element) -> Result) -> [Result]
> func map<Result>(_ transform: (from: Element) -> Result) -> [Result]
> 
> which, yes, would require you to rewrite the names if you cared, but would at least allow you to rewrite the names if you cared. More importantly, it lets you document callbacks properly. (This kind of works by coincidence today.)

This *might* make sense.  I almost included something similar in my review.  It is one of the use cases I had in mind when I mentioned the possibility of designing a less fragile feature for specific uses cases.  But that discussion is for the future.  :)


> 
> I am in favor of this proposal.
> 
> Jordan
> 
>> On Jun 30, 2016, at 11:44, Austin Zheng via swift-evolution <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
>> 
>> This is a good point. I feel like calling `x` with any sort of argument labels should be prohibited. I don't think there's any expressivity penalty for doing so (especially since tuple splat is gone); plus, once a function is reified as a value (as opposed to being invoked by naming it directly), I think the most principled thing to do is to consider the argument labels "erased".
>> 
>> (There might be an alternate universe in which Swift's function types' argument labels are *fully* significant by disallowing conversions between function values declared with different argument labels, but Swift has never actually enforced such a requirement, and so it's probably better to just formalize the semantics as described above than vacillating on whether argument labels are significant or not.)
>> 
>> Austin
>> 
>> On Thu, Jun 30, 2016 at 11:37 AM, Sean Heber via swift-evolution <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
>> This mostly makes sense to me and it seems like mostly a good idea, but take this example:
>> 
>> func doSomething(x: Int, y: Int) -> Bool { return true }
>> let x = doSomething
>> x(10, 10)
>> 
>> Is it then legal to do this?:
>> 
>> x(blahblah:10, totallyOffTheWallLabelThatDoesNotAppearANYWHERE: 10)
>> 
>> That would seem odd to me. Maybe it could be useful, but it might also be *super* confusing. I’m not sure I have a suggestion as to what to do in a situation like this - but it doesn’t seem “right” to allow it.
>> 
>> l8r
>> Sean
>> 
>> 
>> > On Jun 30, 2016, at 1:26 PM, Chris Lattner via swift-evolution <swift-evolution at swift.org <mailto:swift-evolution at swift.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 <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 <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?
>> >       * Is the problem being addressed significant enough to warrant a change to Swift?
>> >       * Does this proposal fit well with the feel and direction of Swift?
>> >       * If you have used other languages or libraries with a similar feature, how do you feel that this proposal compares to those?
>> >       * How much effort did you put into your review? A glance, a quick reading, or an in-depth study?
>> >
>> > More information about the Swift evolution process is available at
>> >
>> >       https://github.com/apple/swift-evolution/blob/master/process.md <https://github.com/apple/swift-evolution/blob/master/process.md>
>> >
>> > Thank you,
>> >
>> > -Chris Lattner
>> > Review Manager
>> >
>> >
>> > _______________________________________________
>> > swift-evolution mailing list
>> > swift-evolution at swift.org <mailto:swift-evolution at swift.org>
>> > https://lists.swift.org/mailman/listinfo/swift-evolution <https://lists.swift.org/mailman/listinfo/swift-evolution>
>> 
>> _______________________________________________
>> swift-evolution mailing list
>> swift-evolution at swift.org <mailto:swift-evolution at swift.org>
>> https://lists.swift.org/mailman/listinfo/swift-evolution <https://lists.swift.org/mailman/listinfo/swift-evolution>
>> 
>> _______________________________________________
>> swift-evolution mailing list
>> swift-evolution at swift.org <mailto:swift-evolution at swift.org>
>> https://lists.swift.org/mailman/listinfo/swift-evolution
> 
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160630/c93359a9/attachment.html>


More information about the swift-evolution mailing list