2013-04-02 6 views
5

मैं विभिन्न पैकेज स्थापित करने के लिए एसबीसीएल, एमएक्स, कीचड़, और quicklisp का उपयोग कर रहा हूँ।आम लिस्प में मुद्रित प्रतिनिधित्व क्या है?

मैं का दृष्टांत और इतने की तरह एक hunchentoot स्वीकर्ता शुरू,

CL-USER> (hunchentoot:start (make-instance 'hunchentoot:acceptor :port 4242)) 
#<HUNCHENTOOT:ACCEPTOR (host *, port 4242)> 

मैं पोर्ट 4242 पर ब्राउज़र खोलने के द्वारा परीक्षण करने और यह ठीक काम करता है।

तो इसे रोकने के लिए, मैं मुद्रित प्रतिनिधित्व कॉपी कर सकते हैं और आदेश जारी है, इसलिए जैसे:

CL-USER> (hunchentoot:stop #<HUNCHENTOOT:ACCEPTOR (host *, port 4242)>) 
#<HUNCHENTOOT:ACCEPTOR (host *, port 4242)> 

इसी शुरू द्वारा दिया मुद्रित प्रतिनिधित्व के साथ यह केवल काम करता है।

यह मेरे लिए आश्चर्यजनक है। मैंने सोचा कि मुद्रित प्रतिनिधित्व बस पाठ वापस लौटाया गया था, संभवतः क्योंकि वस्तु स्वयं को नहीं दिखाया जा सका। इस तरह, मैंने सोचा कि यह बहुत साफ था कि hunchentoot: ऑब्जेक्ट खोजने के लिए स्टॉप टेक्स्ट स्ट्रिंग का उपयोग कर सकता है। लेकिन फिर अधिक प्रयोग के साथ, मैंने देखा कि मुझे शुरुआत के अनुरूप मुद्रित प्रतिनिधित्व का उपयोग करना था, न कि किसी भी। मैंने यह भी ध्यान दिया कि जब मैंने मुद्रित प्रतिनिधित्व पर अपना माउस लगाया तो यह पूरे सेगमेंट को हाइलाइट करता है। तो यह बिल्कुल पाठ नहीं है लेकिन वास्तव में आरईपीएल में वस्तु है, और मैं इसका उपयोग कर सकता हूं।

तो एक तरफ जो लौटाया गया है वह प्रिंट प्रतिनिधित्व है इसलिए मैं इसे देख सकता हूं, लेकिन दूसरी ओर यह वास्तविक वस्तु है जिसे मैं प्रतिलिपि में कॉपी और पेस्ट कर सकता हूं। क्या यह सही है? मुझे लगता है कि यह होना चाहिए क्योंकि मैं इसे कर रहा हूँ। यह मेरे लिए बिल्कुल अद्भुत है।

कोई स्पष्टीकरण या अंतर्दृष्टि की सराहना की जाएगी।

उत्तर

6

ये तथाकथित 'प्रस्तुतियां' हैं। एसएलएमईई उपयोगकर्ता मैनुअल, Presentations देखें।

प्रलेखन भी बताते हैं वस्तुओं दूर जाना नहीं है, तो क्या होता है ...

विचार ज्यादातर बीबीएन (Zdybel, एट अल।, एक सूचना प्रस्तुति प्रणाली, 1981), तो Symbolics लिस्प से आता है मशीन और पोर्टेबल Common Lisp Interface Manager, जो इसके विंडो सिस्टम में आउटपुट के दौरान अंतर्निहित वस्तुओं को रिकॉर्ड करता है। ये प्रस्तुतियां ग्राफ़िकल और टेक्स्ट आउटपुट के लिए काम करती हैं और इसके उपयोगकर्ता इंटरफ़ेस के लिए एक महत्वपूर्ण आधार हैं।

एसएलआईएमई ने अपने आरईपीएल के लिए विचार उठाया है।

+0

उत्कृष्ट। मैनुअल के लिंक के लिए धन्यवाद, और Zdybel संदर्भ के लिए (Google आसानी से एक पीडीएफ पाता है)। – kes

7

यह स्लीम "जादू" है। वास्तव में, आप लिस्प में ऐसे "प्रिंट प्रतिनिधित्व" के साथ कुछ भी नहीं कर सकते हैं, क्योंकि इसे एक अपठनीय वस्तु माना जाता है: इसे अपने कार्यान्वयन के कंसोल मोड में आज़माएं। लेकिन कीचड़ वास्तविक वस्तु के लिए संघ को याद रखता है, तो यह है कि #<...> बात के लिए वस्तु विकल्प होगा - तरह के एक लिस्प मशीन की तरह ...

क्या सही ढंग से और हमेशा काम करेंगे यह है:

CL-USER> (defvar *server* (hunchentoot:start (make-instance 'hunchentoot:easy-acceptor :port 4242))) 
*server* 
CL-USER> (hunchentoot:stop *server*) 
#<HUNCHENTOOT:ACCEPTOR (host *, port 4242)> 
+2

हां, मैं आमतौर पर ऑब्जेक्ट को सहेजता हूं इसलिए मैं इसे रोक सकता हूं। तो एसएलईएमई लौटाई वस्तु प्राप्त कर रहा है और इसे प्रिंट प्रस्तुति से जोड़ रहा है। यह लौटा lambdas के साथ भी करता है। अच्छी सुविधा यह नहीं पता था कि यह वहां था। सिवाय इसके कि यह एक सवाल उठाता है: क्या होगा यदि मैं नहीं चाहता कि सभी ऑब्जेक्ट अभी भी मौजूदा हैं? शायद बफर को साफ़ करने से उन्हें मार दिया जाता है। यह निश्चित रूप से उन्हें पहुंच से बाहर कर देगा। हो सकता है कि यह एक और सवाल के योग्य है। – kes

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