Вот настоящий Quine, программа (не функция), которая генерирует копию своего собственного исходного текста в качестве полного вывода.
На консоли,
# y1.R is a quine program
$ cat y1.R
(function(x){cat(x);cat('(');cat(intToUtf8(0x0022));cat(x);cat(intToUtf8(0x0022));cat(')')})("(function(x){cat(x);cat('(');cat(intToUtf8(0x0022));cat(x);cat(intToUtf8(0x0022));cat(')')})")
# execute y1.R and show output
$ /usr/bin/R --vanilla --slave < y1.R
(function(x){cat(x);cat('(');cat(intToUtf8(0x0022));cat(x);cat(intToUtf8(0x0022));cat(')')})("(function(x){cat(x);cat('(');cat(intToUtf8(0x0022));cat(x);cat(intToUtf8(0x0022));cat(')')})")
# save the output of the execution of y1
$ /usr/bin/R --vanilla --slave < y1.R > y2.R
# compare input and output -- exactly same.
$ diff y1.R y2.R
вероятно, это не самый короткий.
ОБНОВЛЕНИЕ:
и немного более короткая версия:
(function(x){cat(x,'(',d<-intToUtf8(0x0022),x,d,')',sep='')})("(function(x){cat(x,'(',d<-intToUtf8(0x0022),x,d,')',sep='')})")