妮神教的,没看过标准的我只能猜测,不过开始猜测的还正确了
我在一个包文件里这么定义了一个常量
(defconstant +levels+ (vector :error :warning :info :debug))
load的时候说重复定义,这显然是不正确的,我其他地方都没定义过,显然后边那个值又计算了。我在群里问就是后边这个值是不是又计算了一次。
不过我不知道原因是load了多次导致的
妮神的讲解就是,加载到repl的时候会load多次,然后 就会定义多次,而常量不允许定义多次,cl的实现就会判断定义的时候后边的值是否eql,eql就通过,不eql就报错。而vector虽然是不变长的,但是还不是一个对象,执行两次不eql,所以会报错。
直接用defparameter定义的,包里边自己别修改一般不会有问题吧。
上一篇: common lisp包编译方法
下一篇: common lisp 函数调用的顺序
0 Responses so far.