> On Jan 22, 2017, at 11:26 AM, Matthew Johnson <matt...@anandabits.com> wrote:
> 
> 
>> On Jan 22, 2017, at 3:51 AM, Robert Widmann via swift-evolution 
>> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
>> 
>> Sure.  One of the first gadgets I wrote was a way of destructuring an array 
>> into a familiar cons-list kind of enum 
>> (https://github.com/typelift/Basis/blob/master/Basis/Array.swift#L9 
>> <https://github.com/typelift/Basis/blob/master/Basis/Array.swift#L9>) which 
>> you use something like this with other non-trivial enums 
>> (https://github.com/typelift/Valence/blob/cf4353c64de93b98c460529b06b8175c9ecfb79b/Tests/SystemF.swift#L161
>>  
>> <https://github.com/typelift/Valence/blob/cf4353c64de93b98c460529b06b8175c9ecfb79b/Tests/SystemF.swift#L161>).
>> 
>> It's not strictly a problem for me to lose this feature, but it is gonna be 
>> a bit weird if we lose recursive match but also allow it for just plain old 
>> tuple patterns.
> 
> We’re not discussing taking away recursive match are we?  IIUC the discussion 
> is limited to taking away matching all associated values as a single tuple, 
> rather than matching each value individually.

Correct.

>> 
>> ~Robert Widmann
>> 
>> 2017/01/22 3:02、Daniel Duan <dan...@duan.org <mailto:dan...@duan.org>> 
>> のメッセージ:
>> 
>>> FWIW, in all public Github repos with 5k+ stars whose language gets 
>>> recognized as “Swift”, 576 enum cases has associated values and among them 
>>> 55 has 2 values or more. After some very casual grepping I didn’t find a 
>>> lot of usage of this particular pattern.
>>> 
>>> Care to share some examples, Robert?
>>> 
>>> - Daniel Duan
>>> 
>>>> On Jan 21, 2017, at 11:00 PM, Robert Widmann <devteam.cod...@gmail.com 
>>>> <mailto:devteam.cod...@gmail.com>> wrote:
>>>> 
>>>> I find myself doing this a lot, but maybe my problems are just more 
>>>> Algebra-shaped than most.  That said, I appreciate this cleanup and lean 
>>>> +1 (because you mentioned a way to partly keep this behavior).
>>>> 
>>>> ~Robert Widmann
>>>> 
>>>> 2017/01/19 18:14、Joe Groff via swift-evolution <swift-evolution@swift.org 
>>>> <mailto:swift-evolution@swift.org>> のメッセージ:
>>>> 
>>>>> 
>>>>>> On Jan 19, 2017, at 2:58 PM, Daniel Duan <dan...@duan.org 
>>>>>> <mailto:dan...@duan.org>> wrote:
>>>>>> 
>>>>>> 
>>>>>>> On Jan 19, 2017, at 2:29 PM, Joe Groff <jgr...@apple.com 
>>>>>>> <mailto:jgr...@apple.com>> wrote:
>>>>>>> 
>>>>>>>> 
>>>>>>>> On Jan 19, 2017, at 1:47 PM, Douglas Gregor via swift-evolution 
>>>>>>>> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
>>>>>>>> 
>>>>>>>> This looks totally reasonable to me. A couple of comments:
>>>>>>>> 
>>>>>>>> 1) Because this proposal is breaking the link between the associated 
>>>>>>>> value of an enum case and tuple types, I think it should spell out the 
>>>>>>>> rules that switch statements will use when matching an enum value 
>>>>>>>> against a a case with an associated value. Some kind of rules fell out 
>>>>>>>> of them being treated as tuple types, but they might not be what we 
>>>>>>>> want.
>>>>>>> 
>>>>>>> I was about to bring up the same. Right now, an enum pattern works like 
>>>>>>> .<identifier> <tuple-pattern>, where the <tuple-pattern> then 
>>>>>>> recursively matches the payload tuple. In this model, it seems like 
>>>>>>> we'd want to treat it more like .<identifier>(<pattern>, <pattern>, 
>>>>>>> ...). Similar to how we lost "tuple splatting" to forward a bunch of 
>>>>>>> arguments, we'd have to decide whether we lose the ability to match all 
>>>>>>> parts of the payload into a tuple.
>>>>>> 
>>>>>> I’m leaning towards “no” for simplicity of the language (and 
>>>>>> implementation). That means this would be source-breaking 😞.  Will 
>>>>>> update the proposal and see how the rest of the feedback goes.
>>>>> 
>>>>> It'd be a good idea to try to find examples of people doing this out in 
>>>>> the wild too, to see how widespread it is as well as how onerous the 
>>>>> workarounds for losing the feature would be.
>>>>> 
>>>>> -Joe
>>>>> 
>>>>> _______________________________________________
>>>>> 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

Reply via email to