2010-10-04 15 views
12

क्या आम लिस्प में आप परमाणु को कॉल करेंगे, और एक प्रतीक के बीच कोई अंतर है?आम लिस्प में परमाणु और प्रतीक के बीच क्या अंतर है?

क्या ये अंतर लिस्प परिवार में अन्य भाषाओं में विस्तारित हैं?

(मुझे पता है कि परमाणु Clojure में एक अलग अर्थ नहीं है, लेकिन मैं क्या एक प्रतीक है की सीमाओं में दिलचस्पी रखता हूँ।)

+0

नाम "परमाणु" ग्रीक "परमाणु" अर्थात् "अविभाज्य" से आता है। इसलिए, अणुओं को "परमाणु" और "लिसप में 'विपक्ष' नहीं होने वाले अविभाज्य कणों से बना माना जाता था, आमतौर पर विभाजित नहीं किया जा सकता है। – erjiang

उत्तर

11

कॉमन लिस्प में, परमाणु ठीक किसी भी वस्तु के रूप में परिभाषित किया गया है यह एक विपक्ष नहीं है। अधिक जानकारी के लिए http://l1sp.org/cl/atom देखें।

मुझे लिस्प परिवार में अन्य भाषाओं के बारे में पता नहीं है।

> (pair? 1) 
#f 
> (pair? '(1 2 3)) 
#t 
> (pair? 'a) 
#f 

इस प्रकार प्रतीकों परमाणुओं, सिर्फ संख्या और तारों के रूप में कर रहे हैं:

1

योजना में, एक परमाणु कुछ भी है कि एक जोड़ी नहीं है। परमाणु में आम लिस्प में एक समान परिभाषा है, जहां (atom object) फ़ंक्शन (not (consp object)) होने के लिए परिभाषित किया गया है।

+0

यह योजना में "परमाणु" की संभावित परिभाषाओं में से एक है। –

0

आम लिस्प में, एक प्रतीक अन्य भाषाओं में एक चर की तरह बहुत अधिक है, हालांकि अधिक हेवीवेट (यह केवल मूल्य को पकड़ने के लिए पर्याप्त स्मृति का एक खाली टुकड़ा नहीं है)। यह आमतौर पर intern एड होता है, इसलिए इसे नाम से संदर्भित किया जा सकता है, हालांकि अज्ञात प्रतीक होना संभव है (सी में स्मृति की तरह ही आप केवल पॉइंटर द्वारा संदर्भित हो सकते हैं)।

एक परमाणु कुछ मान है जो cons सेल नहीं है। प्रतीक एक परमाणु है, और इसलिए एक संख्या, एक स्ट्रिंग, और कई अन्य चीजें हैं। cons कोशिकाओं का सबसे आम उपयोग सूचियां बनाने में है, हालांकि अन्य तरीकों से उनका उपयोग करना संभव है।

+1

एक प्रतीक अन्य भाषाओं में एक चर के समान नहीं है। एक प्रतीक एक नाम के साथ एक 'वस्तु' है। स्रोत कोड में हम प्रतीकों के साथ चर लिखते हैं, लेकिन यह प्रतीक को एक चर नहीं बना देता है। (foo (bar) bar defun) <- यहां बीएआर स्रोत कोड में एक प्रतीक है, लेकिन प्रतीक संकलित फ़ंक्शन में चर नहीं है। –

+0

@Rainer: दुर्भाग्यवश, मुझे सीएल प्रतीक का वर्णन करने के लिए एक अच्छा तरीका नहीं पता है जो तुरंत समझ में आता है। यह सिर्फ एक नाम के साथ एक वस्तु नहीं है। इसमें एक नाम भी नहीं है (सोचें '(gensym) '), और यह एक अजीब तरह का ऑब्जेक्ट है। –

+0

निश्चित रूप से इसका नाम है: (प्रतीक-नाम (gensym)) -> "जी 1620 99 4"। यह सिर्फ एक गणना का नाम है। एक प्रतीक एक ऑब्जेक्ट होता है जिसका नाम होता है, यदि इसे किसी पैकेज में प्रशिक्षित किया जाता है और किसी मान, फ़ंक्शन, इसका पैकेज, उसका नाम और एक संपत्ति सूची संदर्भित करने के लिए उपयोग किया जा सकता है। –

4

'परमाणु' आमतौर पर सूची प्रसंस्करण से देखा जाता है। सामान्य लिस्प में कुछ या तो एक खाली सूची या परमाणु है। पूर्व में एक परमाणु को 'परमाणु प्रतीक' भी कहा जाता था, जो कुछ अलग होता है। अब आम लिस्प परमाणु न केवल प्रतीकों हैं, बल्कि बाकी सब कुछ जो एक विपक्षी कोशिका नहीं है (उदाहरण: तार, संख्या, हैशटेबल, धाराएं, ...)।

अगर कुछ परमाणु नहीं है (एक विपक्ष है), संचालन कार, सीडीआर, FIRST और REST का उपयोग किया जा सकता है।

तो परमाणु डेटा संरचना का एक समूह है। एक प्रतीक एक निश्चित डेटा संरचना है, जो एक परमाणु भी होता है।

संबंधित मुद्दे