> I assert that naming the interface for the implementation is almost always the wrong thing to do.
I think it's perfectly acceptable if there aren't really any better names for the abstraction you're creating. car and cdr work just fine as made-up arbitrary names for an abstraction that doesn't really have any more natural names for them; the fact that 60 years ago they weren't actually entirely arbitrary doesn't really change that.
(And then you ask me what would be a better name, and I don't have a perfect answer. "left" and "right" are the best I know of...)