Todavía luchando por comprender cuáles son las mejores prácticas con respecto a las macros. Estoy intentando escribir una macro que define paquetes sobre la marcha.Principiante en Common Lisp: Pregunta de macro para definir paquetes sobre la marcha
(defmacro def-dynamic-package (name)
`(defpackage ,(intern (string-upcase name) "KEYWORD")
(:use :common-lisp)))
Esto funciona bien sólo para expresiones tales como:
(def-dynamic-package "helloworld")
Pero fracasa miserablemente para algo como esto:
(defun make-package-from-path (path)
(def-dynamic-package (pathname-name path)))
o
(defun make-package-from-path (path)
(let ((filename (pathname-path)))
(def-dynamic-package filename)))
entiendo cómo la mayoría las macros básicas funcionan pero cómo para implementar esto se me escapa.
Ah, este fue uno de los problemas que tuve al diseñar una macro, que el desfase en sí mismo era una macro que me dificultaba razonar acerca de un buen enfoque. Gracias. – dnolen
En realidad, es un paquete de desintegración que proporciona paquetes funciones como una práctica macro. :-) –