प्रसिद्ध SICP को पढ़ते समय, मैंने पाया कि लेखक अध्याय 3 में योजना के असाइनमेंट स्टेटमेंट को प्रस्तुत करने के लिए अनिच्छुक प्रतीत होते हैं। मैं पाठ और इस तरह के समझ को पढ़ता हूं कि वे ऐसा क्यों महसूस करते हैं।
जैसा कि स्कीम पहली कार्यात्मक प्रोग्रामिंग भाषा है जिसके बारे में मुझे कभी कुछ पता है, मुझे आश्चर्य है कि कुछ कार्यात्मक प्रोग्रामिंग भाषाएं हैं (निश्चित रूप से योजना नहीं) असाइनमेंट के बिना कर सकती हैं।
पुस्तक के प्रस्तावों का उदाहरण दें, उदाहरण का उपयोग करें bank account
। यदि कोई असाइनमेंट स्टेटमेंट नहीं है, तो यह कैसे किया जा सकता है? balance
चर को कैसे बदलें ? मैं ऐसा इसलिए पूछता हूं क्योंकि मुझे पता है कि कुछ तथाकथित शुद्ध कार्यात्मक भाषाएं हैं और ट्यूरिंग पूर्ण सिद्धांत के अनुसार, यह भी किया जाना चाहिए।
मैंने सी, जावा, पायथन को सीखा और मेरे द्वारा लिखे गए प्रत्येक कार्यक्रम में असाइनमेंट का उपयोग किया। तो यह वास्तव में एक आंख खोलने वाला अनुभव है। मैं वास्तव में आशा करता हूं कि कोई व्यक्ति यह बता सकता है कि उन कार्यात्मक प्रोग्रामिंग भाषाओं में कार्य कैसे टाले जाते हैं और इन भाषाओं पर इसका क्या (यदि कोई हो) गहरा प्रभाव पड़ता है।
ऊपर उल्लिखित उदाहरण यहाँ है:
(define (make-withdraw balance)
(lambda (amount)
(if (>= balance amount)
(begin (set! balance (- balance amount))
balance)
"Insufficient funds")))
तो इसमें परिवर्तन balance
द्वारा set!
। मेरे लिए यह वर्ग सदस्य को बदलने के लिए एक वर्ग विधि की तरह लग रहा है balance
।
जैसा कि मैंने कहा, मैं कार्यात्मक प्रोग्रामिंग भाषाओं से परिचित नहीं हूं, इसलिए यदि मैंने उनके बारे में कुछ गलत कहा, तो बेझिझक इंगित करें।
set!
या अन्य कार्यों के बिना लिखना होगा जो एक के साथ समाप्त होते हैं!
। एक बार जब आप इसके साथ सहज हो जाते हैं, तो शुद्ध एफपी के लिए संक्रमण आसान होना चाहिए।