I do not claim it would. I believe there's a misunderstanding. I am not suggesting a change to how isIdentical(to:) ought to function. My issue is that the proposal is written ambiguously, and has misled several first-time readers into what the proposal would do. I am suggesting a couple of improvements to the text for clarity. Let me collect those here for the sake of discussion.
First, the "Introduction" ought to read:
We propose a new instance method
isIdentical(to:)which returnstrueif two objects can be determined to be equal in constant time; or false otherwise.
If I understand the proposal correctly, this should not represent a change to its behavior, just a clarification.
Second, I understand the "Considered Alternatives" to list implementations that also work, but might be inferior for one reason or another. It is not necessary for the alternative to work in all cases, as long as there is some situation where the Proposal would be superior to the Considered Alternative. There may also cases where maybe the "Considered Alternative" seems similar at first glance, but has nothing in common with the proposal, and ought to be clarified for the reader.
In this proposal, there are a certain set of cases that frequently perform comparison between two objects. If I am trying to cache the output of a function, I might use a Dictionary. However given this proposal, maybe it would be better to use a Memoizer that calls isIdentical(to:). This would also help describe for new readers the difference between various ways of testing for equality (that are in fact somewhat different).