0

Leiningen1.7.1とClojure1.3.0を使用しています。私の質問は、:aotコンパイラ指令と、defが動的ではないことを示すエラーメッセージとの関係は何ですか?

詳細は次のとおりです。

いずれかのproject.cljファイル(2つのライブラリとそれらに依存するメイン)から:aotディレクティブを削除すると、警告が表示されます。区切り文字は動的に宣言されていないため、動的に再バインドできません。

このようにステートメントを変更すると

(def bene-ssn-idx 16)
(def gic-ssn-idx 2)

動的ディレクティブを含めると、このランタイムエラーが発生します

スレッド"main"の例外java.lang.IllegalStateException:非動的変数を動的にバインドできません:clojure-csv.core / strict

ある時点で、Clojure 1.3に最初の警告メッセージに関する問題があり、それが修正されると聞いたのを覚えています。

:aotのおかげで、より長いビルドで生活できることを完全に嬉しく思いますが、:aotを削除すると警告が生成される理由に加えて、警告とエラーが何を意味するのか疑問に思っています。

4

1 に答える 1

2

Clojure 1.3に準拠していないバージョンのclojure-csvを使用しています。そのイヤーマフされた変数は、動的として宣言されていません。事前コンパイルを使用することでその問題をどのように防ぐかについての詳細はわかりません。

于 2012-04-10T18:20:45.887 に答える