Estoy tratando de tomar una cadena y convertirla en un nombre de variable. Pensé que (make-symbol) o (interno) haría esto, pero aparentemente no es lo que quiero, o lo estoy usando incorrectamente.Crear un nombre de variable a partir de una cadena en Lisp
Por ejemplo:
> (setf (intern (string "foo")) 5)
> foo
5
Aquí estaría tratando de crear una variable llamada 'foo' con un valor de 5. A excepción, el código anterior me da un error. ¿Cuál es el comando que estoy buscando?
¡Oye, eso funcionó! Especie de. En realidad, no intento asignar valores usando (establecer) sino usando otra función llamada (add-dm) que no creé. Aparentemente, (add-dm) tiene la misma limitación que (setf), donde la primera expresión no se evalúa, así que tendré que encontrar otra forma. Pero eso arrojó algo de luz sobre las cosas, ¡así que gracias! (Además, me doy cuenta de que (cadena) es innecesario, aunque mi objetivo final es crear un símbolo a partir de cadenas concatenadas, así que lo guardé por si hiciera una diferencia). – Jeff
@Jeff Si 'ADD-DM' es una macro, podría expandirse a una función exportada que se puede usar de la misma manera que' SET '. Intente inspeccionar el resultado de '(macroexpand-1 '(add-dm ...))' para ver si tiene suerte. – WReach
SET no es necesario. –