(redirected from Quines)
Also found in: Dictionary, Thesaurus.


Willard van Orman. 1908--2000, US philosopher. His works include Word and Object (1960), Philosophy of Logic (1970), The Roots of Reference (1973), and The Logic of Sequences (1990)


/kwi:n/ (After the logician Willard V. Quine, via Douglas Hofstadter) A program that generates a copy of its own source text as its complete output. Devising the shortest possible quine in some given programming language is a common hackish amusement.

In most interpreted languages, any constant, e.g. 42, is a quine because it "evaluates to itself". In certain Lisp dialects (e.g. Emacs Lisp), the symbols "nil" and "t" are "self-quoting", i.e. they are both a symbol and also the value of that symbol. In some dialects, the function-forming function symbol, "lambda" is self-quoting so that, when applied to some arguments, it returns itself applied to those arguments. Here is a quine in Lisp using this idea:

((lambda (x) (list x x)) (lambda (x) (list x x)))

Compare this to the lambda expression:

(\ x . x x) (\ x . x x)

which reproduces itself after one step of beta reduction. This is simply the result of applying the combinator fix to the identity function. In fact any quine can be considered as a fixed point of the language's evaluation mechanism.

We can write this in Lisp:

((lambda (x) (funcall x x)) (lambda (x) (funcall x x)))

where "funcall" applies its first argument to the rest of its arguments, but evaluation of this expression will never terminate so it cannot be called a quine.

Here is a more complex version of the above Lisp quine, which will work in Scheme and other Lisps where "lambda" is not self-quoting:

((lambda (x) (list x (list (quote quote) x))) (quote (lambda (x) (list x (list (quote quote) x)))))

It's relatively easy to write quines in other languages such as PostScript which readily handle programs as data; much harder (and thus more challenging!) in languages like C which do not. Here is a classic C quine for ASCII machines:

char*f="char*f=%c%s%c;main() printf%c"; main()printf

For excruciatingly exact quinishness, remove the interior line break. Some infamous Obfuscated C Contest entries have been quines that reproduced in exotic ways.

Ken Thompson's back door involved an interesting variant of a quine - a compiler which reproduced part of itself when compiling (a version of) itself.
References in periodicals archive ?
MIT Press, 1960), Quine extends his argument against analyticity and meanings by the thought experiment of radical translation.
In discussing indeterminacy of translation, Quine points out the unfortunate circumstance that so many of his readers have mistakenly taken his "gavagai" example in Word and Object as an instance of indeterminacy of translation.
This was partly due to the intrinsic difficulty of the topic and partly due to the panel's largely unsuccessful attempt to get Quine to discuss his misgivings about meanings in chronological order.
It is lively, focused, exceedingly interesting, and shows Quine at his best.
Boolos starts things off by asking Quine if one million could ever be less than seven.
In Mathematical Logic (New York: Norton, 1940) Quine seemed to regard set theory as part of logic, but in Methods of Logic (New York: Holt, 1950) he distinguishes set theory from logic; does this represent a change of heart?
Did Quine slight Boole and/or Peirce in crediting Frege with making logic a great subject?
Nonetheless, I think I can salvage three of Quine's points: (1) though he does not deny the existence of qualia and raw feels, Quine believes they are irrelevant to linguistic communication (i.
First, what might be called the study of language consists, for Quine, of two separate projects.
A second important point is that even though Quine blurs the distinction between philosophy and science he is not advocating that the philosopher should slavishly follow the scientist's lead.
Some of these volumes have made major contributions to Quine scholarship and lesser contributions to the classroom.