Clojure:
कोड को फंक्शन्स में व्यवस्थित करना
कैसे करें:
क्लोजर में फ़ंक्शन defn
का उपयोग करके परिभाषित किए जाते हैं, इसके बाद नाम, पैरामीटर, और शरीर होता है। यहाँ एक त्वरित उदाहरण है।
(defn greet [name]
(str "Hello, " name "!"))
(greet "Alex") ; => "Hello, Alex!"
अब मान लीजिए हम एक आयत के क्षेत्रफल की गणना करना चाहते हैं। इसे सभी को एक साथ करने की बजाय, हम इसे दो फ़ंक्शन में विभाजित करते हैं:
(defn area [length width]
(* length width))
(defn print-area [length width]
(println "The area is:" (area length width)))
(print-area 3 4) ; => क्षेत्रफल है: 12
गहराई से जानकारी
पहले के समय, कोडर्स अपने सारे तर्क को एक ही खंड में डाल देते थे। यह बहुत बुरा लगता था। फिर संरचित प्रोग्रामिंग आई, और फ़ंक्शन्स को काम में लाया जाने लगा। क्लोजर में, प्रत्येक फ़ंक्शन प्रथम श्रेणी का होता है—आप उन्हें किसी अन्य मूल्य की तरह फेंक सकते हैं।
विकल्प? कुछ लोग मल्टी-मेथड्स या हायर-आर्डर फ़ंक्शन्स के साथ परेशान हो सकते हैं, लेकिन वे बस फ़ंक्शन स्टू में मसाले हैं।
फ़ंक्शन की सभी विवरणों में: वे क्लोजर में अपरिवर्तनीय होते हैं, जिससे पक्ष प्रभाव की गड़बड़ी कम संभावनायुक्त बनती है। वे सामान्य लूप की जगह भारी मात्रा में पुनरावृत्ति पर आधारित होते हैं, जो की भाषा के फंक्शनल पैराडाइम्स के साथ अच्छी तरह से मेल खाती है।
यह भी देखें
- क्लोजर का अपना मार्गदर्शक: https://clojure.org/guides/learn/functions
- फ़ंक्शनल प्रोग्रामिंग के मूल: https://www.braveclojure.com/core-functions-in-depth/
- रिच हिकी की बातें: https://changelog.com/posts/rich-hickeys-greatest-hits - क्लोजर के दर्शन पर अंतर्दृष्टि के लिए।