> On Jan 16, 2017, at 10:28 AM, Karl Wagner <[email protected]> wrote:
>
>
>> On 13 Jan 2017, at 23:02, Joe Groff via swift-evolution
>> <[email protected] <mailto:[email protected]>> wrote:
>>
>>
>>> On Jan 13, 2017, at 1:10 PM, Anton Zhilin via swift-evolution
>>> <[email protected] <mailto:[email protected]>> wrote:
>>>
>>> That seems pretty close to Rust’s derive. Why not invent a similar syntax
>>> in Swift? Otherwise it will make us look through all the sources to make
>>> sure deriving is used.
>>>
>>> enum Option: @derive Equatable {
>>> ...
>>> }
>>
>> My feeling on this is that it feels strange to treat compiler-provided
>> default implementations as different from library-provided default
>> implementations. If the library provides a protocol extension with an
>> appropriate default implementation for your type, you get it without any
>> work on your part. While the Equatable/Hashable/Comparable conformance would
>> most practically compiler generated today, you could imagine a far future
>> version of Swift having sufficiently powerful generic type traits to do this
>> in the library.
>>
>> -Joe
>> _______________________________________________
>> swift-evolution mailing list
>> [email protected] <mailto:[email protected]>
>> https://lists.swift.org/mailman/listinfo/swift-evolution
>
> It would be helpful for synthesised RawRep conformance. The inheritance-like
> syntax we have now is awful - it makes people think that RawRepresentable is
> some kind of magic protocol that will allow special compiler jango to happen.
>
> You could see why they think that. This looks very much like the enum is
> going to *be* an Int32:
>
> enum Something: Int32 {
> case oneThing = 36
> case anotherThing = 42
> }
>
> This is also one of the icky parts to allowing tuples of integer/string
> literals (something people ask for quite a lot). It would look like you’re
> deriving your enum from a non-nominal type:
>
> enum Something: (Int32, Int32) {
> case oneThing = (3, 12)
> case anotherThing = (5, 9)
> }
>
> Getting back to the topic: we should do this. We do it for plain enums. We do
> it for tuples of Equatables.
Tuples of Equatables are not themselves Equatable just yet, though that would
be a reasonable thing to add. They just have a bunch of `==` overloads.
-Joe
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution