我想像"Common Lisp Recipes"书中建议的那样,在case宏中使用常量变量。
- 10-2. 使用常量变量作为CASE宏中的键
不幸的是,在Clozure CL中无法实现。
(defpackage #:foo
(:use #:cl))
(in-package #:foo)
(defconstant +one+ 1)
(defconstant +two+ 2)
(defun lol (gg)
(ecase gg
(#.+one+ :one)
(#.+two+ :two)))
这段代码无法加载。
Unbound variable: FOO::+ONE+
[Condition of type UNBOUND-VARIABLE]
Restarts:
0: [CONTINUE] Retry getting the value of FOO::+ONE+.
1: [USE-VALUE] Specify a value of FOO::+ONE+ to use this time.
2: [STORE-VALUE] Specify a value of FOO::+ONE+ to store and use.
这段代码在SBCL中可以正常运行,为什么在CCL中不能正常工作?
我正在使用macOS上的64位Clozure CL 1.12。