gpt4 book ai didi

macros - Common Lisp 初学者 : Macro Question For Defining Packages on the Fly

转载 作者:太空宇宙 更新时间:2023-11-03 18:37:56 24 4
gpt4 key购买 nike

仍在努力了解有关宏的最佳实践。我正在尝试编写一个动态定义包的宏。

(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)))

我了解大多数基本宏的工作原理,但我不知道如何实现这个宏。

最佳答案

defpackage 是一个宏。因此,它在编译时扩展,而不是运行时。您想要的是在运行时调用以制作新包的东西。因此,defpackage 不能为您做任何事情。

幸运的是,还有 make-package ,它将defpackage 的特性作为函数提供。使用它代替 defpackage

关于macros - Common Lisp 初学者 : Macro Question For Defining Packages on the Fly,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/279696/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com