Common Lisp 重命名命名空间的方式

6

在Common Lisp中,重命名一个命名空间的常见方式是什么?所以,我可以写ht:start而不是hunchentoot:start。

我正在寻找类似Python中的import A as B的功能。

编辑:使用接受的答案,添加hunchentoot的昵称的代码如下:

(rename-package :hunchentoot :hunchentoot '(:ht))
2个回答

9
您所称的命名空间是使用 defpackage 创建的 Common Lisp 包。
您希望该包的昵称为 ht
在现有包上执行 defpackage 会有实现定义的行为,但某些实现允许通过这种方式添加昵称。
还有一个函数 rename-package,可以重命名并添加包的昵称。

2
以下是一个用法示例:https://dev59.com/n2nWa4cB1Zd3GeqPxy00?answertab=votes#tab-top - Clayton Stanley

1

我使用这个:

(defpackage :foo+bar
  (:use :bar)
  (:export
   #:*foo* #:foo #:foo-p #:foo-ffs!
   . #.(let (ext)
         (do-external-symbols (sym :bar)
           (push (symbol-name sym) ext))
         ext)))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接