Как включить clj-time и clojure.contrib в clojure 1.2? - PullRequest
1 голос
/ 26 сентября 2010

Я попытался перенести проект с clojure 1.1 на 1.2 из-за новых протоколов, введенных в 1.2. Но когда я пытаюсь :use clojure-contrib.duck-streams, я получаю предупреждение о 'spit', который уже существует в clojure.core. Та же проблема с clj-time.core и 'extend', которая также существует в clojure.core.

Может кто-нибудь объяснить, что было бы самым элегантным способом обойти эти глупые ошибки?

Кстати: от моего project.clj:

 :dependencies [[org.clojure/clojure "1.2.0"]
                [org.clojure/clojure-contrib "1.2.0"]
                [clojure-csv/clojure-csv "1.1.0"]
                [org.shxiao/clojureql "1.0.0"]
                [clj-time "0.1.0-SNAPSHOT"]]

Ответы [ 3 ]

3 голосов
/ 26 сентября 2010

Вы можете избавиться от предупреждения расширения (или ошибки?), Введя (:refer-clojure :exclude [extend]) в свой (ns ..). Я представил патч, чтобы исправить это некоторое время назад. Похоже, они никогда не выпускали новый снимок для него.

Что касается бита утиных потоков, то это потому, что spit раньше был в утиных потоках, но теперь находится в clojure.core. Проверьте clojure.java.io. Большая часть функциональности утиного потока достигла кульминации в Clojure 1.2. Если вы не хотите использовать clojure.java.io, предупреждение о спите совершенно безвредно, но от него можно избавиться, просто исключив его при использовании clojure.contrib.duck-streams (который также является clojure.contrib.io в настоящее время).

(ns foo (:use [clojure.contrib.duck-streams :exclude [spit]]))

Вот некоторые документы API для clojure.java.io: http://clojuredocs.org/Clojure%20Core/clojure.java.io. На момент написания этой статьи, похоже, нет документов для этого на http://clojure.github.com/clojure/. Понятия не имею, почему .

1 голос
/ 25 марта 2011

Хотя часть этой информации верна, потоки утки были удалены из contrib и больше не будут появляться после 1.2. На самом деле уток-потоков не так много, чего вы не можете сделать в ядре Clojure.

0 голосов
/ 26 сентября 2010

Импортируйте все, кроме функции, вызывающей конфликт.Тогда spit ссылается на версию, которая была перенесена в clojure.core, который, вероятно, является предпочтительной версией

(use '[clojure.contrib.duck-streams :exclude 'spit])

Форма макроса ns:

(ns foo (:use [clojure.contrib.duck-streams :exclude 'spit]))
...