2011-12-28 14 views
7

किसी में पता है कि #+ और #- ऑपरेटरों .sbclrc में मतलब है? मैं इसे मैनुअल में नहीं ढूंढ सका। मैं .sbclrc में #- देखने के बाद मैं quicklisp स्थापित:ऑपरेटर # + और # - .sbclrc

#-quicklisp 
(let ((quicklisp-init (merge-pathnames "quicklisp/setup.lisp" 
             (user-homedir-pathname)))) 
    (when (probe-file quicklisp-init) 
    (load quicklisp-init))) 

मैं भी SBCL प्रयोक्ता मैनुअल में #+ देखते हैं, लेकिन मैं उनकी कार्यक्षमता का विवरण नहीं मिल सका। ऐसा लगता है कि अलग-अलग मॉड्यूल लोड करने के लिए कुछ संबंधित है।

वे केवल SBCL कार्यान्वयन या आम तुतलाना के भाग के लिए कर रहे हैं?

उत्तर

6

वे कॉमन लिस्प READ एर का हिस्सा हैं। विचार यह है कि वे "छिपाएँ" पाठ जब तक एक निश्चित सुविधा (अक्सर एक निश्चित सीएल कार्यान्वयन) है (#+) या (#-) उपलब्ध नहीं है।

ये शायद सीएल अवधारणा "पाठ्य मेक्रोस" का C/C++ विचार की तरह सबसे कर रहे हैं - धारणात्मक और pragmatically, वे

#ifdef __MSVC12__ 
#ifndef __cplusplus__ 

की तरह कुछ करने के लिए बहुत समान ... और की तरह हैं। वे सचमुच READ एर से आने वाली cource कोड के टुकड़े को छिपाने, तो वे कभी नहीं lexed रहे हैं - पार्स - व्याख्या - संकलित - का मूल्यांकन - प्रशिक्षु - नाडा। यदि आप चल रहे हैं सीएल कार्यान्वयन में कोई सुविधा नहीं है/तो "गलत" कार्यान्वयन/जो भी झंडा है, वे आसानी से अस्तित्व में हैं।

+0

तुम्हें पता है, जहां मैं इस के लिए दस्तावेज़ीकरण देख सकते हैं करते हैं? मैं सोच रहा हूं कि क्या अन्य रीडर विशेषताएं हैं जिन्हें मैं नहीं जानता हूं। – sudo

+3

सामान्य रूप से, एक अग्रणी # के साथ कुछ भी पाठक में कुछ खास है; http://www.lispworks.com/documentation/HyperSpec/Front/X_Mast_9.htm से शुरू होने वाले सीएलएचएस इंडेक्स को # से नीचे देखें – BRFennPocock

13

कॉमन लिस्प, न केवल SBCL की एक सामान्य सुविधा है यही कारण है कि।

एक चर cl:*features* जो जो लिस्प प्रणाली वर्तमान में उपस्थित होना चाहिए 'सुविधाओं' के लिए प्रतीकों को सूचीबद्ध करता है। विशिष्ट विशेषताएं हैं: एंडियन, कार्यान्वयन, उपप्रणाली, प्रोसेसर, एक्सटेंशन, लिस्प बोली और अधिक।

एक लिस्प फ़ाइल अभिव्यक्ति #+quicklisp(foo) का मतलब में: पढ़ सकते हैं और (foo) पर अमल तभी जब सुविधा quicklisp सुविधाओं *features* की सूची में मौजूद है।

एक लिस्प फ़ाइल अभिव्यक्ति #-quicklisp(foo) का मतलब में: पढ़ सकते हैं और निष्पादित (foo) केवल तभी सुविधा quicklisp सुविधाओं *features* की सूची में मौजूद नहीं है।

यह सुविधा अक्सर किसी अन्य सामान्य लिस्प कार्यान्वयन को कार्यान्वित विशिष्ट कोड को छुपाने या दिखाने के लिए उपयोग की जाती है।

दस्तावेज़ देखें:

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