common-lisp
उद्धरण
खोज…
वाक्य - विन्यास
- (भाव वस्तु) -> वस्तु
टिप्पणियों
कुछ ऑब्जेक्ट्स (उदाहरण के लिए कीवर्ड प्रतीक) हैं जिन्हें उद्धृत करने की आवश्यकता नहीं है क्योंकि वे स्वयं का मूल्यांकन करते हैं।
सरल उद्धरण उदाहरण
उद्धरण एक विशेष ऑपरेटर है जो इसके तर्क के मूल्यांकन को रोकता है। यह बिना तर्क के अपना तर्क देता है।
CL-USER> (quote a)
A
CL-USER> (let ((a 3))
(quote a))
A
'विशेष ऑपरेटर QUOTE के लिए एक उपनाम है
नोटेशन 'thing
(quote thing)
बराबर है।
पाठक विस्तार करेंगे:
> (read-from-string "'a")
(QUOTE A)
आगे के मूल्यांकन को रोकने के लिए उद्धरण का उपयोग किया जाता है। उद्धृत वस्तु स्वयं का मूल्यांकन करती है।
> 'a
A
> (eval '+ 1 2)
3
यदि उद्धृत वस्तुओं को विनाशकारी रूप से संशोधित किया जाता है, तो परिणाम अपरिभाषित होते हैं!
उद्धृत वस्तुओं पर विनाशकारी संचालन से बचें। उद्धृत वस्तुएं शाब्दिक वस्तुएं हैं। वे संभवतः किसी तरह कोड में एम्बेडेड हैं। यह कैसे काम करता है और संशोधनों के प्रभाव आम लिस्प मानक में अनिर्दिष्ट हैं, लेकिन इसके साझा डेटा को संशोधित करने, संरक्षित डेटा को संशोधित करने या अनपेक्षित दुष्प्रभावों को बनाने जैसे अवांछित परिणाम हो सकते हैं।
(delete 5 '(1 2 3 4 5))
उद्धरण और स्व-मूल्यांकन करने वाली वस्तुएं
ध्यान दें कि कई डेटाटाइप्स को उद्धृत करने की आवश्यकता नहीं है, क्योंकि वे स्वयं का मूल्यांकन करते हैं। QUOTE
विशेष रूप से प्रतीकों और सूचियों के लिए उपयोगी है, ताकि Lisp रूपों के रूप में मूल्यांकन को रोका जा सके।
मूल्यांकन को रोकने के लिए उद्धृत करने के लिए अन्य डेटाटिप्स की आवश्यकता नहीं है: तार, संख्या, वर्ण, CLOS ऑब्जेक्ट, ...
यहाँ तार के लिए एक उदाहरण है। मूल्यांकन के परिणाम तार हैं, चाहे वे स्रोत में उद्धृत किए गए हों या नहीं।
> (let ((some-string-1 "this is a string")
(some-string-2 '"this is a string with a quote in the source")
(some-string-3 (quote "this is another string with a quote in the source")))
(list some-string-1 some-string-2 some-string-3))
("this is a string"
"this is a string with a quote in the source"
"this is another string with a quote in the source")
इस प्रकार वस्तुओं के लिए कोटेशन वैकल्पिक है।