如何在Common Lisp中对整个包进行阴影处理?

问题描述 投票:0回答:1

Common Lisp提供了:shadow子句来禁用你不想使用的包名的继承。但是如何对整个包名进行影子化呢?

这是我的基本设置。

#-cl-ppcre (ql:quickload :cl-ppcre)
#-iterate (progn (ql:quickload :iterate) (push :iterate *features*))
#-rutilsx (progn (ql:quickload :rutilsx) (push :rutilsx *features*))

(defpackage :concepts
  (:use :cl :cl-ppcre :iterate :rutilsx)
  (:shadow :iter)  ;error
  (:nicknames :con))

但这会产生名称冲突

问题是 :rutilsx 包括 :iter 包,我想禁用它,所以我可以使用 :iterate 来代替。谢谢你的帮助。

package common-lisp shadow
1个回答
1
投票

解决冲突,支持 iterate 以此 :shadowing-import-from 的相关符号,这应该是一个可管理的数字。

另一个选择是 :use 唯独 rutils 的包。

最后,你可以对大多数东西使用包前缀(也许用包的名字),只显式地导入那些没有包前缀会很笨重的符号。 这也让我们更容易看到一个符号的来源。

© www.soinside.com 2019 - 2024. All rights reserved.