As mentioned earlier, NaN != NaN, demonstrating that an Equatable instance that does not always equal itself is not "radical." Plainly, your proposal is unworkable.
On Mon, Jul 18, 2016 at 13:48 Johannes Neubauer via swift-evolution < [email protected]> wrote: > > > Am 18.07.2016 um 14:01 schrieb Johannes Neubauer via swift-evolution < > [email protected]>: > > > > > >> Am 18.07.2016 um 13:52 schrieb Johannes Neubauer via swift-evolution < > [email protected]>: > >> > >>> > >>> Am 18.07.2016 um 13:05 schrieb L. Mihalkovic < > [email protected]>: > >>> > >>> IMHO implementing your proposal would close the door on some of the > things you do when building in-memory dbs (T == U -> TRUE for T not related > to U), which if swift remains for small apps is not a terrible loss, but > may be more of an issue for one day doing big-data with it. > >> > >> You talk about reference types now, right? I proposed a `default` > keyword, which (in a pattern matching fashion) would catch all calls to T > == U for which no implementation exists (so this is exactly when T != U). > You could of course change for a given type hierarchy the `default` result > to `true` if appropriate. > > > > This formulation can be misleading: I mean `a == b` where `a: T` and `b: > U` and `T != U`. Due to dynamic dispatch even: `a.dynamicType == T && > b.dynamicType == U && T != U`. > > But I think, for such a radical different semantic than the normal > interpretation of equality I think I wouldn’t use the `Equatable`-protocol > at all, but implement a custom protocol with a custom operator. > _______________________________________________ > swift-evolution mailing list > [email protected] > https://lists.swift.org/mailman/listinfo/swift-evolution >
_______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
