clojure ट्यूटोरियल
क्लोजर के साथ शुरुआत करना
खोज…
टिप्पणियों
क्लीजुर एक गतिशील रूप से टाइप की जाने वाली सामान्य प्रयोजन प्रोग्रामिंग भाषा है जिसमें लिस्प सिंटैक्स होता है।
इसकी विशेषताएं प्रथम श्रेणी के कार्यों और डिफ़ॉल्ट रूप से अपरिवर्तनीय मूल्यों के साथ प्रोग्रामिंग की कार्यात्मक शैली का समर्थन करती हैं। क्लीजुर में कई मुख्यधारा की भाषाओं में पुन: उपयोग किए जाने योग्य चर का उपयोग करना उतना आसान नहीं है, क्योंकि कंटेनर ऑब्जेक्ट की तरह ही बनाए और अपडेट किए जाने हैं। यह शुद्ध मूल्यों के उपयोग को प्रोत्साहित करता है, जिस तरह से वे उस समय बने रहेंगे जब वे आखिरी बार देखे गए थे। यह आम तौर पर कोड को अधिक अनुमानित, परीक्षण करने योग्य और संक्षिप्त-सक्षम बनाता है। यह संग्रह के लिए भी काम करता है, क्योंकि क्लॉजुर के अंतर्निहित डेटा संरचनाएं लगातार हैं।
प्रदर्शन के लिए, क्लोजर जहां संभव हो, अनावश्यक प्रतिबिंब को खत्म करने के लिए टाइप-हिंटिंग का समर्थन करता है। इसके अलावा, लगातार संग्रह में परिवर्तन के समूह क्षणिक संस्करणों में किए जा सकते हैं, इसमें शामिल वस्तुओं की मात्रा को कम कर सकते हैं। यह अधिकांश समय आवश्यक नहीं है, क्योंकि लगातार संग्रह तेजी से कॉपी करने के लिए क्योंकि वे अपने अधिकांश डेटा साझा करते हैं। उनके प्रदर्शन की गारंटी उनके परस्पर समकक्षों से दूर नहीं है।
अन्य सुविधाओं में, क्लोजर भी है:
- सॉफ्टवेयर ट्रांसेक्शनल मेमोरी (एसटीएम)
- मैनुअल लॉकिंग (परमाणु, एजेंट) को शामिल नहीं करने वाली कई संगामिति आदिम
- कंपोजेबल अनुक्रम ट्रांसफार्मर (ट्रांसड्यूसर),
- कार्यात्मक वृक्ष हेरफेर सुविधाएं (ज़िपर्स)
इसकी सरल वाक्य रचना और उच्च एक्स्टेंसिबिलिटी (मैक्रोज़ के माध्यम से, कोर इंटरफेस के कार्यान्वयन और प्रतिबिंब) के कारण, कुछ सामान्य रूप से देखी जाने वाली भाषा सुविधाओं को लाइब्रेरीज़ के साथ क्लोजर में जोड़ा जा सकता है। उदाहरण के लिए, core.typed
एक स्टैटिक टाइप चेकर लाता है, core.async
सरल चैनल-आधारित संगामिति तंत्र लाता है, core.logic
लॉजिक प्रोग्रामिंग लाता है।
एक होस्ट की गई भाषा के रूप में डिज़ाइन किया गया है, यह उस प्लेटफ़ॉर्म के साथ इंटरऑपरेट कर सकता है जिस पर वह चलता है। जबकि प्राथमिक लक्ष्य JVM और जावा के पीछे का संपूर्ण पारिस्थितिकी तंत्र है, वैकल्पिक कार्यान्वयन अन्य वातावरणों में भी चल सकते हैं, जैसे कि क्लीजुरेएलआर, कॉमन लैंग्वेज रनटाइम या क्लोजुरस्क्रिप्ट पर चलने वाले जावास्क्रिप्ट रनटाइम (वेब ब्राउज़र सहित) पर चल रहा है। हालांकि वैकल्पिक कार्यान्वयन में जेवीएम संस्करण से कुछ कार्यक्षमता की कमी हो सकती है, फिर भी उन्हें भाषाओं का एक परिवार माना जाता है।
संस्करण
संस्करण | लॉग बदलें | रिलीज़ की तारीख |
---|---|---|
1.8 | नवीनतम परिवर्तन लॉग | 2016/01/19 |
1.7 | लॉग 1.7 बदलें | 2015/06/30 |
1.6 | लॉग 1.6 बदलें | 2014-03-25 |
1.5.1 | लॉग 1.5.1 बदलें | 2013-03-10 |
1.4 | लॉग 1.4 बदलें | 2012-04-15 |
1.3 | लॉग 1.3 बदलें | 2011-09-23 |
1.2.1 | 2011-03-25 | |
1.2 | 2010-08-19 | |
1.1 | 2010-01-04 | |
1.0 | 2009-05-04 |
स्थापना और सेटअप
विकल्प 1: लेनिंगन
JDK 6 या नए की आवश्यकता है।
सबसे आसान तरीका है Clojure के साथ आरंभ करने के लिए डाउनलोड करने और Leiningen, वास्तविक मानक उपकरण Clojure परियोजनाओं, तो चलाने का प्रबंधन करने के स्थापित करने के लिए है lein repl
एक खोलने के लिए आरईपीएल ।
लिनक्स
curl https://raw.githubusercontent.com/technomancy/leiningen/stable/bin/lein > ~/bin/lein export PATH=$PATH:~/bin chmod 755 ~/bin/lein
ओएस एक्स
MacOS पैकेज प्रबंधकों के साथ ऊपर दिए गए लिनक्स चरणों का पालन करें या स्थापित करें।
Homebrew के साथ स्थापित करें
brew install leiningen
MacPorts के साथ स्थापित करें
पहले Clojure स्थापित करें
sudo port -R install clojure
Leiningen
लिए एक निर्माण उपकरण, Leiningen
स्थापित करें
sudo port -R install leiningen
lein self-install
खिड़कियाँ
आधिकारिक दस्तावेज देखें।
विकल्प 2: आधिकारिक वितरण
JRE 6 या नए की आवश्यकता है।
क्लीवेज़ रिलीज़ को JVM पर चलाई जाने वाली सरल JAR फ़ाइलों के रूप में प्रकाशित किया जाता है। यह आमतौर पर क्लोजर बिल्ड टूल्स के अंदर होता है।
Http://clojure.org पर जाएं और नवीनतम क्लोजर संग्रह डाउनलोड करें
डाउनलोड किए गए ज़िप फ़ाइल को अपनी पसंद की निर्देशिका में निकालें
उस निर्देशिका में
java -cp clojure-1.8.0.jar clojure.main
आपको JAR फ़ाइल के नाम के लिए उस आदेश में
clojure-1.8.0.jar
को प्रतिस्थापित करना पड़ सकता है जिसे आपने वास्तव में डाउनलोड किया था।एक बेहतर कमांड-लाइन REPL अनुभव के लिए (जैसे कि आपके पिछले आदेशों के माध्यम से साइकिल चलाना), आप
rlwrap
स्थापित करना चाह सकते हैं:rlwrap java -cp clojure-1.8.0.jar clojure.main
विकल्प 3: बूट
JDK 7 या नए की आवश्यकता है।
बूट एक बहुउद्देश्यीय क्लोजर बिल्ड टूल है। इसे समझना क्लोजर के कुछ ज्ञान की आवश्यकता है, इसलिए यह शुरुआती लोगों के लिए सबसे अच्छा विकल्प नहीं हो सकता है। स्थापना निर्देशों के लिए वेबसाइट देखें (वहां आरंभ करें पर क्लिक करें )।
एक बार जब यह स्थापित हो जाता है और आपके PATH
, आप क्लोज़र REPL शुरू करने के लिए कहीं भी boot repl
चला सकते हैं।
"नमस्ते दुनिया!" REPL में
क्लोजर समुदाय इंटरैक्टिव विकास पर एक बड़ा जोर देता है, इसलिए क्लोजर के साथ काफी बातचीत एक आरईपीएल (रीड-इवल-प्रिंट-लूप) के भीतर होती है । जब आप इसमें एक एक्सप्रेशन डालते हैं, तो क्लूजुर इसे पढ़ता है, इसका मूल्यांकन करता है, और मूल्यांकन के परिणाम को एक लूप में प्रिंट करता है।
आपको अब तक एक क्लोजर आरईपीएल लॉन्च करने में सक्षम होना चाहिए। यदि आप नहीं जानते कि कैसे, इस विषय में इंस्टालेशन और सेटअप सेक्शन का पालन करें। एक बार जब आप इसे चालू कर लेते हैं, तो इसमें निम्नलिखित टाइप करें:
(println "Hello, world!")
फिर Enter मारा। यह Hello, world!
प्रिंट करना चाहिए Hello, world!
, इस अभिव्यक्ति की वापसी के मूल्य के बाद, nil
।
यदि आप तुरंत कुछ क्लोजर चलाना चाहते हैं, तो ऑनलाइन REPL का प्रयास करें। उदाहरण के लिए http://www.tryclj.com/ ।
एक नयी एप्लीकेशन बनाऊ
ऊपर दिए गए निर्देशों का पालन करने और लेनिंगेन को स्थापित करने के बाद, चलाकर एक नई परियोजना शुरू करें:
lein new <project-name>
यह <project-name>
फ़ोल्डर के भीतर डिफ़ॉल्ट लेनिंगन टेम्पलेट के साथ क्लोजर प्रोजेक्ट को सेटअप करेगा। लेनिंगन के लिए कई टेम्पलेट हैं, जो परियोजना की संरचना को प्रभावित करते हैं। सबसे आम तौर पर उपयोग किया जाने वाला टेम्पलेट "ऐप" है, जो एक मुख्य-फ़ंक्शन जोड़ता है और प्रोजेक्ट को जार-फ़ाइल में पैक करने के लिए तैयार करता है (जो कि मुख्य-फ़ंक्शन एप्लिकेशन का एंट्री पॉइंट है)। इसे रनिंग के साथ प्राप्त किया जा सकता है:
lein new app <project-name>
मान लें कि आपने एक नया एप्लिकेशन बनाने के लिए ऐप-टेम्प्लेट का उपयोग किया है, तो आप परीक्षण कर सकते हैं कि सब कुछ सही ढंग से सेटअप किया गया था, बनाई गई निर्देशिका में प्रवेश करके और एप्लिकेशन का उपयोग करके चलाएं:
lein run
यदि आप Hello, World!
देखते हैं Hello, World!
अपने कंसोल पर, आप अपने एप्लिकेशन का निर्माण शुरू करने के लिए पूरी तरह तैयार हैं और तैयार हैं।
आप निम्न कमांड के साथ इस सरल एप्लिकेशन को दो जार-फाइलों में पैक कर सकते हैं:
lein uberjar
"नमस्ते दुनिया!" बूट का उपयोग कर
नोट: आपको इस उदाहरण को आज़माने से पहले बूट स्थापित करने की आवश्यकता है। यदि आपने अभी तक इसे स्थापित नहीं किया है, तो स्थापना और सेटअप अनुभाग देखें।
बूट शेबंग (#!) लाइन का उपयोग करके निष्पादन योग्य क्लोजर फ़ाइलों को बनाने की अनुमति देता है। निम्न पाठ को अपनी पसंद की फ़ाइल में रखें (यह उदाहरण मानता है कि यह "वर्तमान कार्यशील निर्देशिका में है" और इसे hello.clj
नाम दिया hello.clj
)।
#!/usr/bin/env boot
(defn -main [& args]
(println "Hello, world!"))
फिर इसे निष्पादन योग्य के रूप में चिह्नित करें (यदि लागू हो, आमतौर पर chmod +x hello.clj
)।
... और इसे चलाएं ( ./hello.clj
)।
कार्यक्रम का उत्पादन "हैलो, दुनिया!" और खत्म।
एक नया एप्लिकेशन बनाएं (बूट के साथ)
boot -d seancorfield/boot-new new -t app -n <appname>
यह कमांड बूट को बताएगा कि टास्क boot-new
को https://github.com/seancorfield/boot-new से पकड़ा जाए और app
टेम्पलेट के साथ कार्य को निष्पादित करें (अन्य टेम्प्लेट के लिए लिंक देखें)। कार्य एक नई निर्देशिका बनाएगा जिसे <appname>
जिसमें एक विशिष्ट क्लोजर एप्लिकेशन संरचना है। अधिक जानकारी के लिए उत्पन्न README देखें।
एप्लिकेशन चलाने के लिए: boot run
। अन्य आदेश build.boot
और README में वर्णित हैं।