Greenspun's Tenth Rule

Greenspun's Tenth Rule states:

Any sufficiently complicated C or Fortran program contains an ad hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp.

Which is why it brought a smile to my face to see the following while diging through the PostgreSQL sources:

#define NIL  ((List *) NULL)

... and later on:

extern List *lcons(void *datum, List *list);

So they've got lists, now all they need is "processing".

Unfortunately, car, cdr, cadr, caadr, caaadr and their ilk were nowhere to be found.


For those of who are a little confused, cons is used to construct a linked list in the various dialects of Lisp, while nil is generally the value of the next pointer at then end of such a linked list. The inference that can be drawn from the above facts is: whoever designed Postgres's linked list implementation probably modeled it on the linked lists provided in a Lisp environment.