【发布时间】:2018-09-11 05:40:36
【问题描述】:
我注意到 Common Lisp 中的以下行为(至少使用 SBCL),我能够将其简化为以下行为:
假设我有以下宏:
(defpackage "MY-TEST"
(:use "COMMON-LISP")
(:export :appended
:not-appended))
(in-package :MY-TEST)
(defmacro not-appended ()
`(list ':type 'array))
(defmacro appended ()
`(list ':type 'something-else))
以下是输出:
* (my-test:not-appended)
(:TYPE ARRAY)
* (my-test:appended)
(:TYPE MY-TEST::SOMETHING-ELSE)
请注意,在第二个宏中,命名空间位于“SOMETHING-ELSE”之前。
问题:
- 为什么它们不一样?老实说,我期待“未附加”宏的行为。是因为 Common Lisp 以某种方式知道“数组”吗?
- 如果是,那么我在哪里可以找到其他已知的关键字?
【问题讨论】:
-
在您导入的
COMMON-LISP-package 中有一个名为ARRAY的符号。您可以使用(apropos "" :cl)查看包中的所有符号。 -
@jkiiski,谢谢。现在说得通了。
标签: package common-lisp symbols