2010-08-20 13 views
3

Je télécharge clojure 1.2 et clojure-contrib-1.2.0.jar à partir du download site.Importation de clojure.contrib.generic.math-functions

Et j'ai trouvé l'information sur le math functions.

Comme le montre l'exemple, j'ai essayé d'exécuter le code.

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

Mais, j'ai l'erreur suivante, quand je cours comme suit.

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 

Qu'est-ce qui pourrait être erroné?

+1

En fonction de vos besoins, 'clojure.contrib.math' pourrait être préférable. –

Répondre

6

Essayez :use au lieu de :require

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

Exiger fait le symbole (abs dans ce cas) disponible, mais vous auriez à se qualifier complètement. L'utilisation importe le symbole dans votre espace de noms:

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

': require ...: refer: all' est maintenant préféré à': use' pour les bibliothèques Clojure 1.4.0+ - voir: http://dev.clojure.org/display/community/Library+Coding+Standards & https://github.com/bbatsov/clojure-style-guide – omiel