कथन "योजना जो एक कार्यात्मक प्रोग्रामिंग भाषा है" गलत है। योजना में, एक कार्यात्मक-प्रोग्रामिंग शैली को प्रोत्साहित किया जाता है, लेकिन मजबूर नहीं किया जाता है। वास्तव में, यदि आप किसी भी चर के मूल्य को संशोधित करने के लिए set!
(एक काम बयान!) का उपयोग कर सकते हैं:
(define x 10)
(set! x (+ x 3))
x
=> 13
सवाल का
let
बयान के बारे में
, याद रखें कि एक इस तरह के रूप में एक अभिव्यक्ति:
(let ((x 10))
(+ x 3))
=> 13
... यह सिर्फ वाक्यात्मक चीनी है, और हुड के नीचे इसे इस तरह लागू हो जाता है:
((lambda (x)
(+ x 3))
10)
=> 13
सूचना है कि एक,210, के वैरिएबल पर एक बार single assignments करता है तो यह किसी भी विशुद्ध रूप से कार्यात्मक प्रोग्रामिंग सिद्धांत का उल्लंघन नहीं करता से प्रति, निम्नलिखित एक let
अभिव्यक्ति की पुष्टि की जा सकती है:
एक अभिव्यक्ति का मूल्यांकन नहीं है एक पक्ष प्रभाव अगर यह मशीन का एक नमूदार राज्य में परिवर्तन नहीं होता है, और, एक ही इनपुट के लिए
इसके अलावा एक ही मान पैदा करता विकिपीडिया से उद्धृत:
अशुद्ध कार्यात्मक भाषाएं एकल असाइनमेंट के साथ-साथ सच्ची असाइनमेंट प्रदान करती हैं (हालांकि वास्तविक असाइनमेंट आम तौर पर अनिवार्य प्रोग्रामिंग भाषाओं की तुलना में कम आवृत्ति के साथ प्रयोग किया जाता है)। उदाहरण के लिए, इस योजना में, दोनों ही काम (let
के साथ) और सच्चा काम (set!
के साथ) के लिए सभी चर पर इस्तेमाल किया जा सकता है, और विशेष पुरातन सूचियों, वैक्टर, तार अंदर विनाशकारी अद्यतन के लिए प्रदान की जाती हैं, आदि
स्रोत
2013-02-18 19:18:23
एक कार्यात्मक प्रोग्रामिंग भाषा प्रोत्साहित करती है और सुविधाओं की पेशकश करती है लेकिन यह आवश्यक रूप से कार्यात्मक प्रोग्रामिंग को लागू नहीं करती है। – ThePiercingPrince