SE-0494: Add `isIdentical(to:)` Methods for Quick Comparisons to Concrete Types

For better or for worse… we already sort of "soft-overload" the concept of identity:

I didn't really start working with Swift until after SE-0261 already shipped. In hindsight… I believe engineers would probably wish we would have named this protocol something like IdentifierProviding. But it is what it is and we are where we are.

I could make the argument that plenty of engineers understand that Identifiable is not appropriate for comparing the identity of value types and LSG could make the argument that plenty of engineers still to this day do not understand that Identifiable is not appropriate for comparing the identity of value types. Is it confusing? Or is it not confusing? I guess it depends who you ask…

I don't know if there's one right answer here. There is precedent IMO that we can ship an API named "identical" and this can be decoupled from whether or not a value type has an identity. Whether or not the learned experience from shipping Identifiable is a Good Thing or a Bad Thing might not have an easy answer.

It's possible the overwhelming consensus across LSG is that our "original sin" comes from Identifiable. This is where we began to soft-overload the concept of identity outside of ObjectIdentifier and this is the road we don't want to continue going down. That would then make sense that LSG would push back on isIdentical(to:). This proposal could claim SE-0261 as a "prior art"… but LSG could then claim it was a flawed and imperfect prior art to begin with.