2012-01-03 10 views
17

का उपयोग करके मैं क्लोजर का थोड़ा सा सीखने की कोशिश करता हूं क्योंकि भाषा अच्छी लगती है। लेकिन ऐसा लगता है कि पुस्तकालयों को स्थापित/उपयोग करने के तरीके पर कहीं भी कोई जानकारी नहीं है उदाहरण के लिए clojure.math.numeric-tower।clojure.math.numeric-tower, या किसी भी लाइब्रेरी

अभी के लिए मैं अपने लिनक्स खोल में इस टाइप करके आरईपीएल चलाएँ:

java -cp ~/Clojure/clojure-1.3.0/clojure-1.3.0.jar clojure.main 

मैं सांख्यिक-टॉवर जार डाउनलोड किया है, और यह हर जगह डाल दिया। मैंने हर संभव तरीके से -सीपी विकल्प को संशोधित किया है। मैंने numeric_tower.clj फ़ाइल को हर जगह रखा है। यह अभी भी काम नहीं करता है।

पुस्तकालयों का उपयोग करने का तरीका क्या है?

+0

अरे, यह साल हो गया है - क्या आप मेरा जवाब स्वीकार करेंगे? – bitops

उत्तर

28

मुझे कल भी यही समस्या थी (क्लोजर के लिए एक नवागत के रूप में भी)। मेरी समझ से, क्लोजर 1.2 और 1.3 के बीच उन्होंने अलग-अलग परियोजनाओं में कई contrib पुस्तकालयों को विभाजित किया ताकि उन्हें अधिक आसानी से प्रबंधित किया जा सके। और क्लोजर क्या है के मूल को कम करें।

जो कुछ आप करने की कोशिश कर रहे हैं उसे पूरा करने का सबसे आसान तरीका लीनिंगेन के माध्यम से है (मुझे कल शाम #clojure आईआरसी चैनल में टेक्नोमेंसी से यह जवाब मिला)। सिफारिश है कि लीइंगिंग का उपयोग करके "खेल का मैदान" प्रोजेक्ट बनाना है जिसे आप चारों ओर खेल सकते हैं और क्लोजर सीख सकते हैं। project.clj फ़ाइल को संशोधित शामिल करने के लिए

lein new playground 

:

तो, के साथ एक खेल का मैदान परियोजना बनाने

[org.clojure/math.numeric-tower "0.0.1"] 
एक निर्भरता के रूप में

। मुझे बताया गया था कि http://search.maven.org/ यह जानने का सबसे आसान तरीका है कि किसी विशेष पुस्तकालय का सबसे अद्यतित संस्करण कौन सा है।

फिर,

lein deps 

चलाने जार में खींचने के लिए। अब आप

lein repl 

पर जाने के लिए तैयार हैं।

एक बार repl शुरू कर दिया है, आंकिक-टावर में खींच:

(require '[clojure.math.numeric-tower :as math]) 

तो फिर आप अपने expt कॉल कर सकते हैं:

(math/expt 4 6) ;; yields 4096 

आशा है कि मदद करता है!

+3

आप '(clojure.math.numeric-tower] का उपयोग भी कर सकते हैं)' और फिर "गणित" भाग ड्रॉप करें: '(expt 4 6)' => 4096 – tolitius

+1

एक पूर्व जावा प्रोग्रामर के रूप में, बनाने के लिए यह प्रक्रिया सुनिश्चित करें कि एक पुस्तकालय उपलब्ध है अविश्वसनीय रूप से सरल लगता है, और मुझे खुशी है कि क्लोजर समुदाय ने इसे सरल बना दिया है। एक पूर्व (अच्छी तरह से, वर्तमान) सामान्य लिस्प प्रोग्रामर के रूप में, यह प्रक्रिया अविश्वसनीय रूप से जटिल लगती है, और मुझे हैरान है कि क्लोजर समुदाय ने इसे आसान नहीं बनाया है। (यह क्लोज़ पर सीएल के लिए कोई तर्क नहीं है। प्रत्येक की लागत और लाभ हैं।) – Mars

0

आप इसे सीधे अपने क्लासपाथ में डाल सकते हैं, जैसे आप clojure.jar के साथ कर रहे हैं। यदि दोनों मौजूदा निर्देशिका में थे, तो आप,

java -cp clojure-1.3.0.jar:numeric-tower.jar clojure.main 

(या विंडोज़)

java -cp clojure-1.3.0.jar;numeric-tower.jar clojure.main 

हालांकि साथ clojure शुरू होगा अगर है कि परियोजना clojars पर या Maven खजाने में है, इसके आसान leiningen उपयोग करने के लिए । यह उस तरह की चीज से बहुत परेशानी ले सकता है।

+0

त्वरित उत्तर के लिए धन्यवाद। मैंने यह किया था और आरईपीएल शुरू नहीं होगा (अनुमति अस्वीकार, या अन्य अजीब "पार्स त्रुटियों" आदि ...)। खैर, अब, मैंने फिर से जार डाउनलोड किया और आरपीएल चल रहा है। हालांकि, (clojure.math.numeric-tower/expt 4 6) मुझे एक वर्ग को अपवाद नहीं मिला है। मुझे लगता है कि मुझे एक आयात कमांड का उपयोग करना चाहिए था, लेकिन उनमें से बहुत सारे हैं। मुझे समझ में नहीं आता कि मुझे क्या उपयोग करना चाहिए: अजीब कुंजी के साथ "आवश्यकता", "उपयोग", "आयात", "उपनाम", "संदर्भ"। यह मेरे लिए बहुत सारे विकल्प है। –

0

उदा।। Lib; clojure-1.3.0.jar

lib फ़ोल्डर

lib clojure के तहत बनाने/गणित

डाल फ़ाइल lib/clojure/गणित/numeric_tower.clj

जावा -cp बनाने ; lib/clojure clojure.main

repl

(उपयोग 'clojure.math.numeric-टॉवर)

1

सभी के लिए धन्यवाद। यह अब काम करता है। असल में समस्या जो वास्तव में मुझे उलझन में डालती थी वह यह था कि क्लासपाथ में एक कोलन के बाद जावा ~ (लिनक्स घर) प्रतीक को समझ में नहीं आया था। मैं

java -cp ~/Clojure/clojure-1.3.0/clojure-1.3.0.jar:~/Clojure/lib clojure.main 

और जावा इसे समझ में नहीं आता था।

हालांकि, यह काम करता है अगर आप

java -cp ~/Clojure/clojure-1.3.0/clojure-1.3.0.jar:/home/username/Clojure/lib clojure.main 

है।

क्लासपाथ चर के अजीब व्यवहार।

मैं लीन का उपयोग करता, लेकिन जब से मैं एंड्रॉइड के लिए कुछ प्रोग्रामिंग करने पर विचार कर रहा हूं, मैंने सोचा कि यह बेहतर होगा अगर मैं समझ सकूं कि यह सब जावा के साथ कैसे काम करता है। जब तक लीन एंड्रॉइड प्रोजेक्ट को पैकेज नहीं कर सकता है?

वैसे भी, धन्यवाद। सभी तीन उत्तरों बहुत जानकारीपूर्ण थे।

+0

मैं मानता हूं कि इसे स्वीकार करने योग्य है। – Mars

संबंधित मुद्दे