LISP - चर

LISP में, प्रत्येक चर का प्रतिनिधित्व a symbol। चर का नाम प्रतीक का नाम है और इसे प्रतीक के भंडारण सेल में संग्रहीत किया जाता है।

सार्वत्रिक चर

वैश्विक चर पूरे LISP सिस्टम में स्थायी मान रखते हैं और एक नया मूल्य निर्दिष्ट होने तक प्रभावी रहते हैं।

वैश्विक चर को आम तौर पर उपयोग करते हुए घोषित किया जाता है defvar निर्माण।

उदाहरण के लिए

(defvar x 234)
(write x)

जब आप Execute बटन पर क्लिक करते हैं, या Ctrl + E टाइप करते हैं, तो LISP इसे तुरंत निष्पादित करता है और वापस लौटा परिणाम होता है

234

चूंकि LISP में चर के लिए कोई प्रकार की घोषणा नहीं है, आप सीधे किसी प्रतीक के लिए मान निर्दिष्ट करते हैं setq निर्माण।

उदाहरण के लिए

->(setq x 10)

उपरोक्त अभिव्यक्ति वैरिएबल x को मान 10 प्रदान करती है। आप एक अभिव्यक्ति के रूप में प्रतीक का उपयोग करके चर का उल्लेख कर सकते हैं।

symbol-value फ़ंक्शन आपको प्रतीक भंडारण स्थान पर संग्रहीत मान निकालने की अनुमति देता है।

उदाहरण के लिए

Main.lisp नाम से नया सोर्स कोड फ़ाइल बनाएं और उसमें निम्न कोड टाइप करें।

(setq x 10)
(setq y 20)
(format t "x = ~2d y = ~2d ~%" x y)

(setq x 100)
(setq y 200)
(format t "x = ~2d y = ~2d" x y)

जब आप Execute बटन पर क्लिक करते हैं, या Ctrl + E टाइप करते हैं, तो LISP इसे तुरंत निष्पादित करता है और वापस लौटा परिणाम होता है।

x = 10 y = 20 
x = 100 y = 200

स्थानीय चर

स्थानीय चर किसी निर्धारित प्रक्रिया के भीतर परिभाषित किए जाते हैं। फ़ंक्शन परिभाषा के भीतर तर्क के रूप में नामित पैरामीटर भी स्थानीय चर हैं। स्थानीय चर संबंधित फ़ंक्शन के भीतर ही सुलभ हैं।

वैश्विक चरों की तरह, स्थानीय चरों का उपयोग करके भी बनाया जा सकता है setq निर्माण।

दो अन्य निर्माण हैं - let तथा prog स्थानीय चर बनाने के लिए।

लेट कंस्ट्रक्शन में निम्नलिखित सिंटैक्स होता है।

(let ((var1  val1) (var2  val2).. (varn  valn))<s-expressions>)

जहाँ var1, var2, ..vn वैरिएबल नेम और val1, val2, .. वैलेन संबंधित वैरिएबल्स को असाइन किए गए प्रारंभिक मान हैं।

कब letनिष्पादित किया जाता है, प्रत्येक चर को संबंधित मान सौंपा जाता है और अंतिम रूप से एस-अभिव्यक्ति का मूल्यांकन किया जाता है। मूल्यांकन की गई अंतिम अभिव्यक्ति का मूल्य वापस आ गया है।

यदि आप एक चर के लिए एक प्रारंभिक मूल्य शामिल नहीं करते हैं, तो इसे सौंपा गया है nil.

उदाहरण

Main.lisp नाम से नया सोर्स कोड फ़ाइल बनाएं और उसमें निम्न कोड टाइप करें।

(let ((x 'a) (y 'b)(z 'c))
(format t "x = ~a y = ~a z = ~a" x y z))

जब आप Execute बटन पर क्लिक करते हैं, या Ctrl + E टाइप करते हैं, तो LISP इसे तुरंत निष्पादित करता है और वापस लौटा परिणाम होता है।

x = A y = B z = C

prog निर्माण में इसके पहले तर्क के रूप में स्थानीय चर की सूची भी होती है, जिसका अनुसरण निकाय द्वारा किया जाता है prog, और किसी भी संख्या के एस-भाव।

prog फ़ंक्शन अनुक्रम में एस-अभिव्यक्तियों की सूची को निष्पादित करता है और शून्य वापस करता है जब तक कि यह एक फ़ंक्शन कॉल का नाम नहीं देता है return. तब का तर्क return फ़ंक्शन का मूल्यांकन किया जाता है और वापस आ जाता है।

उदाहरण

Main.lisp नाम से नया सोर्स कोड फ़ाइल बनाएं और उसमें निम्न कोड टाइप करें।

(prog ((x '(a b c))(y '(1 2 3))(z '(p q 10)))
(format t "x = ~a y = ~a z = ~a" x y z))

जब आप Execute बटन पर क्लिक करते हैं, या Ctrl + E टाइप करते हैं, तो LISP इसे तुरंत निष्पादित करता है और वापस लौटा परिणाम होता है।

x = (A B C) y = (1 2 3) z = (P Q 10)