This makes sense. If nobody objects I'll prepare a proposal today. 

By the way, on the topic of design topics: is there any core team support for 
removing associated type inference? I have a proposal there that I would like 
to move into the formal review stage at some point. 

Best,
Austin

Sent from my iPhone

> On Jun 28, 2016, at 9:33 AM, Douglas Gregor <[email protected]> wrote:
> 
> 
>> On Jun 27, 2016, at 10:40 PM, Charlie Monroe <[email protected]> 
>> wrote:
>> 
>> Oh, I see. The issue is then the following:
>> 
>> let x = f
>> x(1, 2) // Error: Missing argument labels 'a:b:' in call
>> 
>> let y: (Int, Int) -> () = f
>> f(1, 2) // OK
>> 
>> Which requires you to write x(a: 1, b: 2). I must admit, however, that I 
>> always liked this behavior…
> 
> Right, that’s the issue. The idea behind this is that it’s a simplification 
> to the type system to eliminate argument labels from types, so we can 
> eliminate some extra subtyping relationships (e.g., between function types 
> with labels and ones without labels). Essentially, argument labels become 
> part of the names of declarations (only!), which is consistent with our view 
> that the names of functions/methods/initializers include all of the argument 
> names.
> 
>    - Doug
> 
>> 
>>> On Jun 28, 2016, at 7:06 AM, Austin Zheng <[email protected]> wrote:
>>> 
>>> I think the point is to get rid of the argument labels. 'x' should be typed 
>>> simply (Int, Int) -> ().
>>> 
>>> That being said, right now the argument labels in the type don't seem to 
>>> actually affect anything, so like Chris I'm not sure what the 
>>> counter-proposal is.
>>> 
>>> (cc. Doug)
>>> 
>>> Best,
>>> Austin
>>> 
>>>>> On Jun 27, 2016, at 10:04 PM, Charlie Monroe <[email protected]> 
>>>>> wrote:
>>>>> 
>>>>> This came from a short list of topics Doug provided me, but the basic 
>>>>> issue is that:
>>>>> 
>>>>> func f(a : Int, b : Int) {
>>>>> let x = f   // x has type (a: Int, b: Int) -> ()
>>>>> }
>>>>> 
>>>>> I’m not exactly sure what the counterproposal is.
>>>> 
>>>> My guess is to require let x = f(a:,b:) (specifying arguments)?
>>>> 
>>>>> 
>>>>> -Chris
>>>>> 
>>>>> 
>>>>> 
>>>>> _______________________________________________
>>>>> swift-evolution mailing list
>>>>> [email protected]
>>>>> https://lists.swift.org/mailman/listinfo/swift-evolution
>>>> 
>>> 
>> 
> 
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to