> On Apr 9, 2017, at 3:01 PM, Jon Shier via swift-evolution 
> <swift-evolution@swift.org> wrote:
> 
>       I generally dislike any language change desired because it makes the 
> compiler implementation easier. We saw a few such changes for Swift 3 and all 
> of them were net negatives for the actual users of the language (to a minor 
> extent for most, to be fair).

I’m going to have to call shenanigans on this claim :-) At least I can’t 
_think_ of any Swift 3 features that were designed with the goal of making the 
implementation simpler. Even the feature removals, such as nuking the ‘function 
currying’ syntax, took time to implement (and this is not even fully removed 
yet).

>  I would hope that, as the compiler matures, these types of inference 
> performance issues will become less of a problem. Removing a rather nice 
> language feature, especially one that plays such a big role in the “feel” of 
> the language, for short term gain seems rather shortsighted to me.

I agree. The type checker might have pathological behavior in some cases now, 
but we hope to fix those over time, and none of it is specific to the 
expressions people usually write in stored property initializers.

Slava

> 
> 
> 
> Jon Shier
> 
> 
>> On Apr 9, 2017, at 11:23 AM, Lucas Neiva via swift-evolution 
>> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
>> 
>> If inference only works in simple cases, I think it would seem like it works 
>> unpredictability to anyone unfamiliar with the implementation details.
>> 
>> I image the question of "why do I have to declare a type here, but not in 
>> this case?" coming up.
>> 
>> Declaring types is one of the first things you have to learn anyway. Just 
>> declaring a function already requires some understanding of types. 
>> Properties are not much different IMO.
>> 
>> On 8 Apr 2017, at 08:34, Brent Royal-Gordon via swift-evolution 
>> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
>> 
>>>> On Apr 7, 2017, at 12:21 AM, Daniel Duan via swift-evolution 
>>>> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
>>>> 
>>>> The cons for doing this are obvious too: the inference makes the language 
>>>> feels more friendly and is, undoubtedly, a beloved feature for many. This 
>>>> would be a source breaking change.
>>> 
>>> 
>>> Beyond just being more friendly, I think it could be considered a teaching 
>>> issue. A great way to introduce beginners to custom types would be 
>>> something like:
>>> 
>>>     struct Point {
>>>             var x = 0.0
>>>             var y = 0.0
>>>     }
>>> 
>>> Or:
>>> 
>>>     struct Person {
>>>             var name = ""
>>>             var age = 18
>>>     }
>>> 
>>> If you have to explicitly specify types for the properties, that's another 
>>> thing you need to introduce to people before you can do this.
>>> 
>>> On the other hand, a very limited form of inference might be fine here. 
>>> Imagine if we did a sort of limited, single-pass, top-down inference which 
>>> only understood a few things (literals, tuple syntax, initializer calls), 
>>> stopped once it had seen enough to infer a complete type, and rejected an 
>>> expression if it encountered something it didn't understand before 
>>> finishing. That would probably cover most simple cases, and it would 
>>> probably only allow expressions whose types were obvious enough that we 
>>> could use it for arguments, too. (But of course it would mean more code in 
>>> the compiler, so it might not be worth it.)
>>> 
>>> -- 
>>> Brent Royal-Gordon
>>> Architechies
>>> 
>>> _______________________________________________
>>> 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
> 
> _______________________________________________
> swift-evolution mailing list
> swift-evolution@swift.org
> 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