lisp - ¿Qué significa "mi otro auto es un cdr"?
cons (3)
¿Puede alguien bien versado en lisp explicarme este chiste? He leído un poco sobre los lenguajes de programación funcionales y sé que CAR / CDR significa contenido de dirección / registro de decremento, pero todavía no entiendo el humor.
// Viniendo de Scheme
Scheme tiene muy pocas estructuras de datos, una de ellas es una tupla: ''(first . second)
. En este caso, car
es el primer elemento y cdr
es el segundo. Esta construcción se puede extender para crear listas, árboles y otras estructuras.
La broma no es muy graciosa.
En Lisp, un elemento de lista vinculado se llama CONS. Es una estructura de datos con dos elementos, llamada CAR y CDR por razones históricas. (Algunos programadores de Common Lisp prefieren referirse a ellos usando las funciones FIRST y REST, mientras que otros como CAR y CDR porque encajan bien con las versiones precompuestas como (CADR x) ≡ (CAR (CDR x)).
La broma es una parodia de las pegatinas de parachoques que a veces se ven en coches viejos y destartalados que dicen "Mi otro coche es un Porsche / BMW / etc."
Mi response a este chiste siempre ha sido "Mi otro CAR es un CADR. CDR no es un CAR".
Sí, definitivamente es una broma geek.
Los nombres provienen del IBM 704, pero esa no es una broma.
La broma es (mala) juego de palabras con "mi otro auto es un ___". Pero la broma es sobre recursividad.
Cuando bucle / manipular / seleccionar / invocar / más en lisp utiliza una combinación de coche (el primer elemento en la lista) y cdr (el resto de la lista) para hacer malabares con las funciones.
Así que tienes un auto, pero tu otro auto es tu cdr porque siempre puedes obtener un auto de un cdr ya que el cdr siempre tiene (en recursión) más elementos. ¿Consíguelo? Reír todavía?
Probablemente tendrá que aprender ceceo para realmente reírse un poco, o no. Por supuesto, para entonces, probablemente te encuentres riéndote al azar sin razón aparente porque:
Lisp te vuelve loco.