19:57 | <TabAtkins> | bakkot: I still feel it's weird for the receiver and argument to use different logic for how to access their values, but if this is a requirement, then the way the proposal is currently accessing the argument's data looks good. (I like in particular that it, incidentally, prevents accidentally passing a plain string and having it interpreted as a Set of letters.) |
19:58 | <TabAtkins> | The rest of the details seem fine too. My only complaint is still about the term 'difference' not suggesting directionality quite strongly enough (and symmetricDifference being just so long), but I expressed that in an issue a few years back and won't block if the champions ended up deciding it's okay. |
20:06 | <bakkot> | thanks for the review! |
20:08 | <bakkot> | yes, it basically ended up being a requirement that the receiver and argument need to use different logic for accessing their values |
20:08 | <bakkot> | and ack on the naming, but I think these names are the best we've got; symmetricDifference in particular doesn't come up very often and if you're reaching for it it you probably know it under that name |
20:26 | <TabAtkins> | Yeah, my only competing suggestions are to use .minus() and .difference() for the two of them - "minus" gives a correct directional read with "A minus B" meaning exactly what it sounds like. "difference" is more symmetric in English and can be used to indicate a symmetric difference - "what's the difference between A and B" is often symmetric. |
20:27 | <TabAtkins> | (I also consider "symmetry" to exceed the complexity budget for names I want to use in API design all by itself; its spelling isn't quite obvious.) |
20:29 | <bakkot> | using "difference" for symmetric difference would be very confusing, I think |
20:30 | <TabAtkins> | I think that was the pushback when I suggested it a few years ago, too. I disagree, but oh well. |