Conundrum: Testing for EQ

One interesting bit about that is that eq?'s interactions with promises… the promises themselves will not be eq?, but the things they resolve to should be. In MarkM’s dissertation this comes up with join implemented in section 19.5.

But note that there are disturbing implications for eg handoff values and hashmap keys and EQ in CapTP once three-party handoffs are involved: since A is handing B a reference to Carol on C, but it’s done via a handoff, Carol will appear as a promise reference in a hashmap rather than as Carol herself. See the lost resolution bug for some hand-wringing about this.

You can ignore this issue of “promises not really pointing to the final thing” and handoffs making those common in a lot of places, but in general the place where EQ really super ultra rears its head is in a petname database. As it turns out, the very first thing Jessica Tallon started implementing for Spritely is a petname database, and we found that for all that code, we had to pay careful attention that we fully resolved all promises in lots of places before dealing with referenced actors. A real headache.