> On Jun 28, 2016, at 9:49 AM, Austin Zheng <[email protected]> wrote:
>
> 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.
Well, *I* want to remove associated type inference because I feel that we
shouldn’t have global inference like this in Swift. I am, however, concerned
about the standard library’s ability to make conformances to the Collection
protocols provide meaningful defaults for, e.g., the SubSequence associated
type.
- Doug
>
> 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