> On 30 Jun 2016, at 22:38, Austin Zheng <austinzh...@gmail.com> wrote:
> 
> You might like the alternative I added 
> (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>).
>  It basically goes the other way: keep the semantic significance of labels, 
> and make them mean something by prohibiting converting between different 
> function types with the same types but different labels.

Yes, thats what I would vote for! I would also add the possibility of 
explicitly converting between different labels, as long as the types match, 
e.g.:

battingAveragePredicate = sinkBattleship as ((ofHits: Int, forRuns: Int) -> 
Bool)

or 

battingAveragePredicate = sinkBattleship as typeof(battlingAveragePredicate)


(whatever the correct syntax for this would be).


Best, 

 t. 




> On Thu, Jun 30, 2016 at 1:36 PM, Taras Zakharko <taras.zakha...@uzh.ch 
> <mailto:taras.zakha...@uzh.ch>> wrote:
> 
>> On 30 Jun 2016, at 22:11, Austin Zheng <austinzh...@gmail.com 
>> <mailto:austinzh...@gmail.com>> wrote:
>> 
>> As for the label semantics, Swift's current behavior is actively misleading, 
>> please see the example in the prior email. There are no meaningful semantics 
>> in the label, because implicit conversion between differently-labeled 
>> function types means that there is no way to usefully enforce these 
>> invariants to begin with.
> 
> That is a good point. I admit to not knowing this (I strongly expected that 
> labels would be semantically meaningful). But what exactly is the status of 
> the argument labels than in Swift? Just a documentation device  for the 
> programmer and a  hint for the compiler to do function dispatch? But if the 
> compiler indeed does dispatch on argument labels, then they are not 
> completely void of semantics, are they?  As I mentioned before, I think the 
> problem here is much deeper. 
> 
> The state of affairs I would prefer is something along these lines:
> 
> 1. Labels are semantically meaningful
> 2. There is an explicit casting system for function signatures
> 3. This casting system should be in close correspondence to tuples. The 
> "function argument lists look sort of like tuples“ is a very compelling 
> reason actually, because of the principle of the least surprise. If I have 
> two things in the language that look very similar, then its very confusing if 
> they  exhibit very different behaviour. Again, I am not proposing that one 
> goes back to model functions in terms of tuples. But as long as there is a 
> surface resemblance (and an obvious morphisms between the two), at least some 
> aspects of their design should be kept in sync. 
> 
> But again, this touches on some deep design decisions for the language, so I 
> — as an amateur — don’t feel in my plate discussing this here. I believe that 
> there currently might be some inconsistencies in the language design that 
> should be sealed with (but maybe they are no inconsistencies at all and I 
> simply have false expectations). 
> 
> Best, 
> 
>  Taras
> 
>> 
>> On Thu, Jun 30, 2016 at 12:42 PM, Taras Zakharko via swift-evolution 
>> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
>> 
>>> On 30 Jun 2016, at 21:20, Xiaodi Wu <xiaodi...@gmail.com 
>>> <mailto:xiaodi...@gmail.com>> wrote:
>>> 
>>> On Thu, Jun 30, 2016 at 2:14 PM, Taras Zakharko via swift-evolution 
>>> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
>>> 
>>> > On 30 Jun 2016, at 20:26, Chris Lattner via swift-evolution 
>>> > <swift-evolution@swift.org <mailto:swift-evolution@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>
>>> >
>>> >       * What is your evaluation of the proposal?
>>> 
>>> -1
>>> 
>>> >       * Is the problem being addressed significant enough to warrant a 
>>> > change to Swift?
>>> 
>>> Yes, but I do not think that the proposed solution is the correct one. 
>>> Rather, one should aim for designing a proper tuple type. Right now, tuples 
>>> seem more like an afterthought even though they play a significant role in 
>>> the language.  Proper tuple casting/extensions/tuple algebra will solve the 
>>> issues pointed out in this proposal, among other useful applications.
>>> 
>>> Taras, I don't believe this proposal touches tuples in any way. IIUC, 
>>> argument lists are no longer tuples and have not been for a long time, and 
>>> there is no intention on the part of the core team to return to that state 
>>> of affairs.
>> 
>> Still, there is a clear correspondence between tuples and argument lists. I 
>> though that the model of functions as maps from tuples to tuples was very 
>> elegant, but I understand why this model was dropped. However tuples seem to 
>> be somehow misplaced right now, and this fact resonates through the entire 
>> language system (function types, enums, pattern matching etc.). I think one 
>> should stop and reconsider tuple status first to get a sense of a ‚grand 
>> strategy‘ for Swift. I am worried that small changes like this proposal 
>> attempt to deal with the ripples cast by a much deeper problem instead of 
>> the problem itself. As far as I am considered, there are two basic options. 
>> Either say, well, tuples were a nice idea, but it doesn’t really work out — 
>> and then consistently apply this to the entire language. Or, reinstate that 
>> tuples are a modelling construct on which a lot of language concepts are 
>> based and try to fix the underlaying limitations. Function arguments don’t 
>> need to be tuples formally. However, why not have a casting system that 
>> allows one to transform between function signatures and tuple types?  That 
>> would certainly solve the deficients Swift is experiencing now as well as 
>> allow greater flexibility in the future. 
>> 
>> And orthogonally to the tuple topic, I think that argument labels carry 
>> meaningful semantics and are much more than just cosmetic devices. Accepting 
>> this proposal would make the language weird. The deeper connection between 
>> the semantics of the argument list and the exposed type would be disturbed. 
>> 
>> Hope any of this has made any sense :)
>> 
>>>  
>>> 
>>> >       * Does this proposal fit well with the feel and direction of Swift?
>>> 
>>> I do not believe so
>>> 
>>> >       * 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?
>>> 
>>> A glance
>>> 
>>> _______________________________________________
>>> swift-evolution mailing list
>>> swift-evolution@swift.org <mailto:swift-evolution@swift.org>
>>> https://lists.swift.org/mailman/listinfo/swift-evolution 
>>> <https://lists.swift.org/mailman/listinfo/swift-evolution>
>> 
>> _______________________________________________
>> swift-evolution mailing list
>> swift-evolution@swift.org <mailto:swift-evolution@swift.org>
>> https://lists.swift.org/mailman/listinfo/swift-evolution 
>> <https://lists.swift.org/mailman/listinfo/swift-evolution>
>> 
>> 
> 
> 

_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to