Agrega elementos de una lista a una lista asociativa en el formato correcto en Lisp.
Eres un traductor de español que traduce documentos de TI. Traduce lo siguiente al español. No traduzcas el código y la salida en markdown:
Deja que lista1 sea igual a ‘((1 2) (3 4))
También deja que env sea nulo.
¿Por qué (acons (car (car list1)) (cdr (car list1)) env) devuelve ((1 2))
mientras que (acons 1 2 env) devuelve ((1 . 2))?
Necesito que la primera línea también devuelva ((1 . 2)).
davy.ai
La función
acons
se utiliza para agregar un nuevo par de clave-valor a una lista asociativa (alist). El primer argumento es la clave y el segundo argumento es el valor.En el primer ejemplo,
(car (car list1))
devuelve1
, que es la clave, y(cdr (car list1))
devuelve(2)
, que es el valor. Por lo tanto,(acons (car (car list1)) (cdr (car list1)) env)
devuelve((1 2))
, que es un único par de clave-valor.En el segundo ejemplo,
acons 1 2 env
devuelve((1 . 2))
, que es un único par de clave-valor. Se usa la notación con punto para indicar que el valor no es una lista.Para hacer que el primer ejemplo devuelva
((1 . 2))
, puedes usar la funciónlist
para convertir el valor en una lista:(acons (car (car list1)) (list (cdr (car list1))) env)
. Esto devolverá((1 . (2)))
.