[swift-evolution] Auto-generate op==?

Donald Pinckney djpinckney at ucdavis.edu
Sat Feb 13 11:38:48 CST 2016


To make sure I understand correctly, what you are discussing is having == be auto generated in some way for types. The automatic implementation of == would be a member wise logical and operation:

struct Person {
   let age: Int
   let name: String
} deriving Equatable

Would also generate:
func ==(left: Person, right: Person) -> Bool {
   return left.age == right.age && left.name == right.name;
}

The compiler would only do this if all data members implement (or derive) the Equatable protocol, and probably error otherwise.

That's my interpretation.  If I misunderstood, please correct me.  

As it stands, I think something like this is a fabulous idea, as I have recently found myself writing lots of member wise equality checks.

Donald Pinckney

Sent from my iPhone

> On Feb 13, 2016, at 9:12 AM, Donnacha Oisín Kidney via swift-evolution <swift-evolution at swift.org> wrote:
> 
> In Haskell, when you declare a datatype, you can follow it with a “deriving” clause, and it will derive several typeclasses (which are Haskell’s equivalent to protocols):
> 
> data Person = Person { name :: String, age :: Int } deriving Eq
> 
> In Swift, I’d imaging the equivalent would be something like:
> 
> struct Person {
>   let name: String
>   let age: Int
> } deriving Equatable
> 
>> On 13 Feb 2016, at 17:04, Patrick Gili via swift-evolution <swift-evolution at swift.org> wrote:
>> 
>> Not having a lot of experience with Haskell, can you provide an example, so that we can better understand what you're proposing?
>> 
>> Cheers,
>> -Patrick
>> 
>>> On Feb 12, 2016, at 3:47 PM, Daniel Tartaglia via swift-evolution <swift-evolution at swift.org> wrote:
>>> 
>>> In Haskell, we can mark a data block as deriving from Eq and it will auto-generate the == operator.
>>> 
>>> I would like to see Swift auto-generate the == operator if a struct implements Equatable. Obviously, it would only be able to do this if all the structs members implemented Equatable themselves.
>>> 
>>> Has this idea already been proposed? I didn’t see it at the github repo…
>>> 
>>> Thanks,
>>> 
>>> _______________________________________________
>>> 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160213/bf3e4c17/attachment.html>


More information about the swift-evolution mailing list