какой-то код в clojure.contrib не работает с Clojure 1.3? - PullRequest
4 голосов
/ 02 ноября 2011

Поскольку Clojure 1.3 «Затычки для наушников больше не считаются автоматически динамическими», часть кода в clojure.contrib зависит от этой функции и больше не работает. Например, db в clojure.contrib.sql.

 Warning: *db* not declared dynamic and thus is not dynamically rebindable, but its name suggests otherwise. Please either indicate ^:dynamic *db* or change the name.
 Exception in thread "main" java.lang.RuntimeException: java.lang.ExceptionInInitializerError

Библиотека contrib все еще в версии 1.2. Как обойти это? Или есть какая-то альфа или предварительная версия contrib lib, которая может работать с Clojure 1.3?

Ответы [ 2 ]

6 голосов
/ 02 ноября 2011

Когда Clojure перешел на 1.3, было решено отказаться от монолитного вклада , то есть единственной библиотеки Contrib с кучей независимых проектов. Причина этого - afaict - в том, что некоторые библиотеки были заброшены, и было сложно заставить людей обновить их до версии 1.3.

Кроме того, несколько библиотек также изменили свое имя. Обзор можно найти здесь: http://dev.clojure.org/display/doc/Clojure+Contrib В частности, библиотека contrib.sql была переименована в java.jdbc и теперь живет здесь https://github.com/clojure/java.jdbc

0 голосов
/ 03 ноября 2011

Часто в наушниках были наушники, которые не ожидали отскока, поэтому вполне возможно, что все будет хорошо без него.

Тем не менее, вы можете переопределить старую переменную следующим образом, позволяя динамически переназначать ее:

(in-ns 'other.ns)
(def ^:dynamic *foo* *foo*)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...