browse words by letter
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
quine |
3 definitions found From WordNet r 1.6 [wn]: Quine n : 1908- [syn: {Quine}, {Willard Van Orman Quine}] From Jargon File (4.2.3, 23 NOV 2000) [jargon]: quine /kwi:n/ n. [from the name of the logician Willard van Orman 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. (We ignore some variants of BASIC in which a program consisting of a single empty string literal reproduces itself trivially.) Here is one classic quine: ((lambda x (list x (list (quote quote) x))) (quote (lambda x (list x (list (quote quote) x))))) This one works in LISP or Scheme. 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(f,34,f,34,10);}%c"; main(){printf(f,34,f,34,10);} For excruciatingly exact quinishness remove the interior line breaks. Here is another elegant quine in ANSI C: #define q(k)main(){return!puts(#k"\nq("#k")");} q(#define q(k)main(){return!puts(#k"\nq("#k")");}) Some infamous {Obfuscated C Contest} entries have been quines that reproduced in exotic ways. There is an amusing Quine Home Page (http://www.nyx.org/~gthompso/quine.htm). From The Free On-line Dictionary of Computing (13 Mar 01) [foldoc]: quine/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(f,34,f,34,10);}%c"; main(){printf(f,34,f,34,10);} 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 [{Jargon File}] (1995-04-25)
more about quine