マクロに関してベストプラクティスが何であるかを理解するのにまだ苦労しています。その場でパッケージを定義するマクロを書き込もうとしています。
(defmacro def-dynamic-package (name)
`(defpackage ,(intern (string-upcase name) "KEYWORD")
(:use :common-lisp)))
これは、次のような式でのみ正常に機能します。
(def-dynamic-package "helloworld")
しかし、このようなものでは惨めに失敗します:
(defun make-package-from-path (path)
(def-dynamic-package (pathname-name path)))
また
(defun make-package-from-path (path)
(let ((filename (pathname-path)))
(def-dynamic-package filename)))
私はほとんどの基本的なマクロがどのように機能するかを理解していますが、これを実装する方法は私を免れます。