[swift-evolution] Reconsidering SE-0003 Removing var from Function Parameters and Pattern Matching
Tyler Cloutier
cloutiertyler at aol.com
Fri Jan 29 13:49:43 CST 2016
On Jan 29, 2016, at 8:54 AM, Dave Abrahams via swift-evolution <swift-evolution at swift.org> wrote:
>
>
> on Thu Jan 28 2016, Thorsten Seitz <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
>
>> This is called flow typing in Ceylon and they are using "exists" for
>> that case but testing for conformance with "is" works just the same
>> way there. The latter is of importance because the common use of union
>> types in Ceylon.
>>
>> if exists foo {
>> // foo is non-optional here
>> }
>>
>> if foo is String {
>> // foo is of type String here
>> }
>
> FWIW, some of us are concerned that if the types of names change
> without being announced by a let or var binding, it will be confusing.
> That's one reason we haven't gone this way in the past.
>
True enough, but is type narrowing (as in the above) really more confusing than
if let x = x {
}
Nothing there suggests that the type of x should change, yet it does. If eliminating confusion was the goal wouldn't
if let x = x? {
}
be more explicit?
Tyler
>> -Thorsten
>>
>>> Am 28.01.2016 um 19:08 schrieb Jacob Bandes-Storch via swift-evolution <swift-evolution at swift.org>:
>>>
>>> if bind foo {
>>> // foo is non-optional in here
>>> }
>>>
>>> somethingAsync { [weak self] in
>>> guard bind self else { return }
>>> // ...
>>> }
>>>
>>> Elegant when you want to rebind the same name!
>>>
>>> Jacob
>>>
>>>> On Thu, Jan 28, 2016 at 10:05 AM, Erica Sadun via swift-evolution
>>>> <swift-evolution at swift.org> wrote:
>>>> Do you realize how much confusion it would save if Swift just went with
>>>>
>>>> if bind foo = bar {...}
>>>>
>>>> with let semantics?
>>>>
>>>> -- Erica
>>>>
>>>>> On Jan 28, 2016, at 11:03 AM, Joe Groff via swift-evolution
>>>>> <swift-evolution at swift.org> wrote:
>>>>>
>>>>>
>>>>>> On Jan 28, 2016, at 12:43 AM, Brent Royal-Gordon <brent at architechies.com> wrote:
>>>>>>
>>>>>>> We have a lot of evidence that 'if var' confuses peopleāa lot
>>>>>>> of users think that 'if var' and 'var' bindings in case
>>>>>>> patterns will write back to the original value when this isn't
>>>>>>> the case.
>>>>>>
>>>>>> Can we address this with a diagnostic?
>>>>>>
>>>>>> var bar: Int? = 1
>>>>>> if var foo = bar {
>>>>>> foo += 1 // Warning: Value is never used after modification (foo is a copy, not an alias)
>>>>>> }
>>>>>> print(bar)
>>>>>
>>>>> Good idea.
>>>>>
>>>>> -Joe
>>>>> _______________________________________________
>>>>> swift-evolution mailing list
>>>>> swift-evolution at swift.org
>>>>> https://lists.swift.org/mailman/listinfo/swift-evolution
>>>>
>>>> _______________________________________________
>>>> swift-evolution mailing list
>>>> swift-evolution at swift.org
>>>> https://lists.swift.org/mailman/listinfo/swift-evolution
>>>
>>> _______________________________________________
>>> swift-evolution mailing list
>>> swift-evolution at swift.org
>>> https://lists.swift.org/mailman/listinfo/swift-evolution
>> _______________________________________________
>> swift-evolution mailing list
>> swift-evolution at swift.org
>> https://lists.swift.org/mailman/listinfo/swift-evolution
>
> --
> -Dave
>
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org <mailto:swift-evolution at swift.org>
> https://lists.swift.org/mailman/listinfo/swift-evolution <https://lists.swift.org/mailman/listinfo/swift-evolution>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160129/7604907e/attachment.html>
More information about the swift-evolution
mailing list