gpt4 book ai didi

common-lisp - 重命名导出符号的批量 `unintern`

转载 作者:行者123 更新时间:2023-12-04 00:06:45 26 4
gpt4 key购买 nike

我经常使用包,导出的符号经常更改它们的名称。当我尝试重新编译包时,我收到如下警告:

package.lisp:3:1:
warning:
MY-PROJECT also exports the following symbols:
(OLD-SYMBOL1 OLD-SYMBOL2 OLD-SYMBOL3)

See also:
Common Lisp Hyperspec, DEFPACKAGE [:macro]
SBCL Manual, *ON-PACKAGE-VARIANCE* [:variable]
--> EVAL-WHEN
==>
(SB-IMPL::%DEFPACKAGE "MY-PACKAGE" '("KE") 'NIL 'NIL 'NIL '("CL") 'NIL
'NIL '("NEW-EXPORTED-SYMBOL1" "NEW-EXPORTED-SYMBOL2") '("MY-PROJECT") 'NIL
...)

我知道我可以使用 (unintern 'old-symbol1) 向系统发出我不想再使用该符号的信号。然而,当有很多重命名时,这变得非常乏味。

我的问题是:

1) 是否可以自动向 sbclemacs 发送信号到 unintern 旧的/以前导出的符号?

2) 如果不是 - 是否可以在变量中获取所有“旧”符号?

我对 2) 的计划是将键绑定(bind)到 (apply #'unintern *old-symbols*)

最佳答案

将变量 *on-package-variance* 设置为列表 (:error t) 将在重新定义包时给出错误而不是警告。错误将有重新启动 DROP-THEM 以取消导出符号。

你可以添加

(setf *on-package-variance* '(:error t))

到您的 ~/.sbclrc 以在启动 SBCL 时始终设置它。

关于common-lisp - 重命名导出符号的批量 `unintern`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39817934/

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