tags:

views:

1080

answers:

5

Can anyone well versed in lisp explain this joke to me? I've done some reading on functional programming languages and know that CAR/CDR mean Contents of Address/Decrement Register but I still don't really understand the humour.

+9  A: 

//Coming from Scheme
Scheme has very few data structures, one of them is a tuple: '(first . second). In this case, car is the first element, and cdr is the second. This construct can be extended to create lists, trees, and other structures.
The joke isn't very funny.

Kobi
Oh man... If I saw a bumper sticker with that joke I would totally scratch the word "primary" in the side with a key.
Josh Einstein
+1, the joke isnt very funny :P
Russell
Wouldn't the tuple be '(first . second)?
Ken
@Ken - again, I don't know lisp, but scheme doesn't have such a complex syntax. Even lists are made of pairs.
Kobi
Indeed, it would be more accurate to say that the tuple is `(first . second)`. The list `'(first second)` is made of two tuples, like this: `(cons first (cons second null))`
mquander
Kobi: I know Lisp, and I'm not sure what you mean by "complex syntax". Dotted syntax is how you write pairs in Lisp, including Scheme: http://www.gnu.org/software/mit-scheme/documentation/mit-scheme-ref/Lists.html . The cdr of (first second) is (second), not second.
Ken
Everyone: I stand corrected. Thanks.
Kobi
So, now we get downvoted for being corrected? oh, well. The sun will shine.
Kobi
A: 

Maybe it's just an 'in-joke', only understandable by those 'in the know'.

Some would find it amusing that they understand something most readers don't.

On the other hand, if it's only seen by people who would understand it, it becomes a celebration of shared knowledge. We all like to do that, don't we?

pavium
Not all nerd humor is reveling in specialized knowledge.
BipedalShark
Do you have an example of nerd humor that *doesn't* revel in specialized (or shared?) knowledge?
jae
I think this question is really for BipedalShark, but it occurs to me that the Jargon File might provide a few examples, for example the nerd tendency to add '-itude' to words, and how about expressions such as 'hilarity ensues' ?
pavium
+22  A: 

In Lisp, a linked list element is called a CONS. It is a data structure with two elements, called the CAR and the CDR for historical reasons. (Some Common Lisp programmers prefer to refer to them using the FIRST and REST functions, while others like CAR and CDR because they fit well with the precomposed versions such as (CADR x) ≡ (CAR (CDR x)).

The joke is a parody of the bumper stickers you sometimes see on beat-up old cars saying "My other car is a Porsche/BMW/etc."

My response to this joke has always been "My other CAR is a CADR. CDR isn't a CAR at all."

Peter S. Housel
+1 for having a usual response. :)
Kobi
+7  A: 

Yes, definitely a geek joke.

The names come from the IBM 704, but that's not the joke.

The joke is (bad) pun on "my other car is a ___." But the in-joke is about recursion.

When you loop/manipulate/select/invoke/more in lisp you use a combination of car (the first element in the list) and cdr (the rest of the list) to juggle functions.

So you've got a car, but your other car is your cdr because you can always get a car from a cdr since the cdr is always (in recursion) more elements. Get it? Laugh yet?

You'll probably have to learn lisp to actually chuckle a bit, or not. Of course, by then, you'll probably find yourself chuckling randomly for no apparent reason because:

Lisp makes you loopy.

zen