Почему я получаю Не могу динамически связать нединамический var? - PullRequest
11 голосов
/ 16 января 2012

Я пытаюсь использовать функцию dotrace в пространстве имен clojure.tools.trace.

(dotrace [my-function] (my-function 5))

Но я получил эту ошибку:

IllegalStateException Не могу динамически связывать нединамический var: my-ns / my-function clojure.lang.Var.pushThreadBindings (Var.java:339)

Что это значит?почему я получаю это?

(я использую Clojure 1.3)

1 Ответ

19 голосов
/ 16 января 2012

Я думаю, вам нужно объявить вашу функцию динамически связанной, например,

(def ^:dynamic my-function
   (fn [x] .....))

Причина этого в том, что если вы явно не запросите динамический var, Clojure (версии 1.3 и выше) сделает его нединамичным для оптимизации производительности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...