2010-09-26 16 views
1

由于1.2中引入的新协议,我试图将项目从clojure 1.1迁移到1.2。但是当我尝试:use clojure-contrib.duck-streams时,我收到了一个关于clojure.core中已经存在的'spit'的警告。与clj-time.core和'extend'同样的问题也存在于clojure.core中。如何在clojure 1.2下包含clj-time和clojure.contrib?

任何人都可以解释什么是最优雅的方式围绕这些愚蠢的错误?

BTW:从我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

可以摆脱延长通过将(:refer-clojure :exclude [extend])(ns ..)警告(或错误?)。我提交了一个补丁来解决这个问题,尽管如此。猜猜他们从来没有为它发布新的快照。

至于鸭流位,这是因为spit曾经是鸭流,但现在clojure.core。检查clojure.java.io。在Clojure 1.2中,大部分duck-stream的功能都达到了顶峰。如果你不想使用clojure.java.io,spit警告是相当无害的,但是可以通过在使用clojure.contrib.duck-streams(也是clojure.contrib.io现在)。

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

以下是clojure.java.io的一些API文档:http://clojuredocs.org/Clojure%20Core/clojure.java.io。在撰写本文时,http://clojure.github.com/clojure/似乎没有任何文档。不知道为什么。

0

导入除引起冲突的函数之外的所有内容。然后吐出将指的被带入clojure.core版本,这可能是首选版本

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

的NS宏观形式是:

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

虽然一些这方面的信息是正确的,鸭-streams已从contrib中删除,不会在1.2之后。无论如何,在核心Clojure中,你确实没有太多的东西可以用在鸭子身上。

相关问题