我正在使用Leiningen 1.7.1和Clojure 1.3.0。我的问题是,如果有的话,是:aot编译器指令和指示我的defs的错误消息之间的关系 不动态吗?
以下是详细信息:
如果我从我的任何project.clj文件中删除:aot指令(两个库和一个依赖于它们的main),我得到警告: delimiter 未声明为动态,因此不是动态的rebindable。
如果我修改这样的语句
(def bene-ssn-idx 16)
(def gic-ssn-idx 2)
包含动态指令,我得到这个运行时错误
线程“main”中的异常java.lang.IllegalStateException:无法动态绑定非动态var:clojure-csv.core / strict
有一次我记得听说Clojure 1.3中有关于第一条警告信息的问题并且它将被修复。
我很高兴能够拥有更长时间的构建,因为:aot,但我仍然在想 警告和错误意味着什么,除了为什么要删除:aot产生警告。
答案 0 :(得分:2)
您正在使用不符合Clojure 1.3标准的clojure-csv版本:其耳罩变量未声明为动态。我不知道使用提前编译如何防止这个问题的细节。