Почему я получаю Не удается динамически связать нединамический var?
Я пытаюсь использовать функцию 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
Я думаю, вам нужно объявить вашу функцию динамически связанной, например.
(def ^:dynamic my-function
(fn [x] .....))
Причина этого в том, что если вы явно не запрашиваете динамический var, Clojure (1.3 вверх) сделает его нединамическим как оптимизацию производительности.