> 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