← Back to context

Comment by kbp

8 years ago

> Something other than CAR/CDR would have been a better choice for working with CONS cells, even back in 1959.

> Are the names less than optimal? Yes.

I don't think that's self-evident. The only better alternatives I've ever heard suggested are something like left and right, which I think are probably slightly clearer names for what the functions do, but not significantly so (I don't think "a cons is a thing with a left and right side" is that much more intuitive than "a cons is a thing with two parts called a car and a cdr").

Further, I think in 1959 when most everyone using Lisp was hacking on the implementation itself, names that are mnemonic for what the machine they were actually using is actually doing make sense; I don't think they're clearly sub-optimal now, but I think they were even less so in 1959.

I assert that naming the interface for the implementation is almost always the wrong thing to do.

(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...)

  • > 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.