¿Alguien ha construido un quine ("Un programa que genera una copia de su propio texto fuente como su salida completa": http://www.nyx.net/~gthompso/quine.htm) en R? (La etiqueta [Quine] se detiene en un montón de ejemplos en Python, Java, ... pero al parecer ninguno en R.)Construir quines (funciones de autorreproducción)
f <- function() { body() }
se acerca:
> f()
{
body()
}
pero carece del nombre de la función .
¿Qué tal la posibilidad más corta? ¿Más ofuscado?
edición: a partir de la variedad de respuestas a continuación, parece que hay una variedad de maneras de definir autorreferencialidad y el medio ambiente en el que tiene que ocurrir:
- en el medio ambiente: R: Función
->
función (@ bill_080) - dentro del entorno OS/shell: programa programa
->
[más o menos equivalente a programar->
texto]: (@kohske) - otro: función
->
texto (@JoshUlrich, @ James, problema como d efined arriba)
Notas:
- El thread from R-help pointed out by @Spacedman (que parece enfatizar la ofuscación más de brevedad) sugiere que
identical(quine,quine())
es un buen caso de prueba, aunque es difícil porque los ambientes se deja llevar por: fuerzaidentical(quine,quine(),ignore.environment=TRUE)
ser más fácil. - Un reciente (octubre de 2015) blog post proporciona otra respuesta ...
Pero 'f() <- function() ...' es un error. –
@Joshua Ulrich Oops, lo arregló ahora. Como una ventaja adicional, la complejidad añadida hace que sea menos fácil de leer y, por lo tanto, más ofuscado. ;) – James