2010-08-20 2 views
3

Загрузите clojure 1.2 и clojure-contrib-1.2.0.jar из download site.Импортирование clojure.contrib.generic.math-functions

И я нашел информацию о math functions.

Как показано в примере, я попытался запустить код.

(ns your-namespace 
    (:require clojure.contrib.generic.math-functions)) 
(println (abs 10)) 

Но, я получил следующую ошибку, когда я бегу следующим образом.

CLOJURE_JAR=/Users/smcho/bin/jar/clojure.jar:/Users/smcho/bin/jar/clojure-contrib-1.2.0.jar 
java -cp $CLOJURE_JAR:$CLASSPATH clojure.main SOURCE.CLJ 
 
Exception in thread "main" java.lang.Exception: Unable to resolve symbol: abs in this context (hello.clj:4) 
    at clojure.lang.Compiler.analyze(Compiler.java:5205) 
     ... 
    at clojure.main.main(main.java:37) 
Caused by: java.lang.Exception: Unable to resolve symbol: abs in this context 
    at clojure.lang.Compiler.resolveIn(Compiler.java:5677) 
    at clojure.lang.Compiler.resolve(Compiler.java:5621) 
    at clojure.lang.Compiler.analyzeSymbol(Compiler.java:5584) 
    at clojure.lang.Compiler.analyze(Compiler.java:5172) 
    ... 25 more 

Что может быть не так?

+1

В зависимости от ваших конкретных потребностей «clojure.contrib.math» может быть предпочтительнее. –

ответ

6

Попробуйте :use вместо :require

(ns your-namespace 
    (:use clojure.contrib.generic.math-functions)) 
(println (abs 10)) 
10 
nil 

Требовать делает символ (абс в данном случае), но вы должны были бы полностью квалифицировать его. Использовать импорт символа в «ваше пространство имен»:

(ns your-namespace2 
    (:require clojure.contrib.generic.math-functions)) 
(println (clojure.contrib.generic.math-functions/abs 10)) 
10 
nil 
+0

': require ...: refer: all' теперь предпочитается над': use' для библиотек Clojure 1.4.0+ - см .: http://dev.clojure.org/display/community/Library+Coding+Standards & https://github.com/bbatsov/clojure-style-guide – omiel

Смежные вопросы