ha ha only serious

Greenspun's Tenth Rule

Greenspun's Tenth Rule of Programming is a common aphorism in computer programming and especially programming language circles. It states:

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


The rule was written sometime around 1993 by Philip Greenspun. Although it is known as his tenth rule, there are in fact no preceding rules, only the tenth. The reason for this according to Greenspun: "Sorry, Han-Wen, but there aren't 9 preceding laws. I was just trying to give the rule a memorable name.


The interpretation is that programmers, constrained by low-level, primitive tools like C, often work around the limitations of their languages by inventing and implementing features found in more expressive languages such as Lisp.

Morris's Corollary

Well-known hacker Robert Morris later added the corollary:

…including Common Lisp.

This can be viewed as a commentary on the difficulty of creating an efficient implementation of the large and complex Common Lisp language, or simply a joke about LISP's eval function and the general commonality of recursion in functional languages. Both Greenspun's rule and Morris's corollary are examples of a characteristic style of hacker humor known as "ha ha only serious".

(Nonetheless, most Common Lisp systems are not written in C or Fortran. Exceptions exist, such as GNU CLISP; however, systems such as Steel Bank Common Lisp are written chiefly in Lisp itself, just as C compilers are usually written in C.)

Prolog follow-up

Any sufficiently complicated LISP program is going to contain a slow implementation of half of Prolog.

Addresses the fact that pure Prolog programs are likely to include Lisp-like isles, and pure Lisp programs are likely to do the converse.


The rule is often modified by replacing "Common Lisp" with the speaker's functional language of choice, such as Scheme or Haskell. It can also be generalized as:

Any sufficiently complicated platform contains an ad hoc, informally-specified, bug-ridden, slow implementation of half of a functional programming language.

See also


Search another word or see ha ha only seriouson Dictionary | Thesaurus |Spanish
Copyright © 2015, LLC. All rights reserved.
  • Please Login or Sign Up to use the Recent Searches feature