gpt4 book ai didi

package - 在包中覆盖 "defun"

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

我想从我正在创建的包中定义一个名为“defun”的宏,我想将它导出以在某些地方使用。有一个名为 parenscript 的库可以在它的包中执行此操作,如下所示,

(export #:defun)

当我尝试在我自己的包中执行此操作时,我收到此 SB​​CL 错误

Lock on package COMMON-LISP violated when defining DEFUN as a macro while in package COMMON-LISP-USER.

parenscript 库中是如何完成的?我知道您可以输入表格;

(ps (defun function-name (args) (body)))

我想做同样的事情,但不知道如何做?

最佳答案

您想隐藏 CL 包中的原始符号。

CL-USER 1 > (defpackage "MY-PACKAGE" (:use "CL"))
#<The MY-PACKAGE package, 0/16 internal, 0/16 external>

CL-USER 2 > (in-package "MY-PACKAGE")
#<The MY-PACKAGE package, 0/16 internal, 0/16 external>

MY-PACKAGE 3 > (shadow 'defun)
T

MY-PACKAGE 4 > (cl:defun defun () :my-defun-returns)
DEFUN

MY-PACKAGE 5 > (defun)
:MY-DEFUN-RETURNS

MY-PACKAGE 6 > (export 'defun)
T

关于package - 在包中覆盖 "defun",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56416647/

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