On Jun 13, 2006, at 4:46 PM, Derek Davis wrote:
On 6/13/06, Gregory Hill <[EMAIL PROTECTED]> wrote:
I meant the 2nd half of the list, Ruby/Python/Perl. I've actually
To be clear for the Lisp guy, you probably should have said
something more like
cdddr(C, C++, Java, ruby, python, perl).
Greg
Derek
P.S. I know, the syntax is probably wrong. That wasn't the point, so
I didn't bother to look it up. :)
It was close!
(cdddr '(C C++ Java Ruby Python Perl))
=> (Ruby Python Perl)
Lisp Trivia: The functions car and cdr in Lisp come from the
assembly language mnemonics 'Contents of Address Register' and
'Contents of Decrement Register' that were used on the machines that
early lisps were programmed on. Since a lisp list is a linked list
of data pairs (called cons pairs in lisp lingo), the car instruction
grabbed the first item and the cdr instruction grabbed the pointer to
the next pair. Thus, the names made perfect sense for those early
implementations. So, why do we still use them?
Well, the above example is probably a big part of it. Lisp allows
you to compose multiple car and cdr operations into a single
expression by adding arbitrary a's and d's between the c and r.
There are now aliases 'first' and 'rest' for 'car' and 'cdr', but
they don't compose like car and cdr do. Peter Norvig, in his style
guide, also suggests using the new aliases when referring to data
that is meant to be a list, and car/cdr when the data is meant to be
a tree or some other structure in order to bettery convey intent.
--Levi
/*
PLUG: http://plug.org, #utah on irc.freenode.net
Unsubscribe: http://plug.org/mailman/options/plug
Don't fear the penguin.
*/