我正在使用 Leiningen 1.7.1 和 Clojure 1.3.0。我的问题是 :aot 编译器指令与指示我的 def 不是动态的错误消息之间的关系(如果有)是什么?
以下是详细信息:
如果我从我的任何 project.clj 文件(两个库和一个依赖于它们的主库)中删除 :aot 指令,我会收到警告:分隔符未声明为动态的,因此不可动态重新绑定。
如果我修改这样的语句
(def bene-ssn-idx 16)
(def gic-ssn-idx 2)
包括动态指令,我得到这个运行时错误
线程“主”java.lang.IllegalStateException 中的异常:无法动态绑定非动态变量:clojure-csv.core/ strict
有一次我记得听说 Clojure 1.3 中有一个关于第一条警告消息的问题,并且它将被修复。
由于:aot,我很高兴能忍受更长的构建,但我仍然想知道警告和错误的含义,以及为什么删除:aot会产生警告。