2015-01-15 6 views
6

सामान्य लिस्प में, स्पष्ट रूप से कुछ विशेष वर्ण हैं जो कुछ रूपों के लिए शॉर्टकट के रूप में कार्य करते हैं। 'x का अर्थ है (quote x)#'f का अर्थ (function f) है। मैंने सोचा था कि (साथ ही बैकटिक) केवल एक ही थे, लेकिन फिर मैंने #() के बारे में सीखा, जो स्पष्ट रूप से एक वेक्टर है, और आज किसी ने #. का उल्लेख किया है, जो स्पष्ट रूप से मूल्यांकन समय के साथ कुछ करता है।आम लिस्प विशेष शॉर्टकट वर्ण

जितना संभव हो मैं कोशिश करता हूं, मुझे लगता है कि कौन से उपसर्ग प्रतीकों का एक व्यापक सूची है और वे क्या करते हैं? क्या यह ऐसा कुछ है जो निर्णय लेने के लिए कार्यान्वित किया गया है, या कोई मुझे उस मानक में कहीं भी इंगित कर सकता है जो इन शॉर्टकटों को व्यापक रूप से सूचीबद्ध करता है?

+0

मानक में केवल एक व्यापक सूची है, लेकिन आप किसी भी समय नए मैक्रो वर्णों को परिभाषित कर सकते हैं। –

+0

वैसे यह मेरे लिए खबर है। मुझे अपना नाम परिभाषित करने के लिए कॉल का नाम क्या है? –

+2

मैं एक साथ जवाब डाल रहा हूं, लेकिन ** लिस्प ** पर अध्याय [17 पढ़ें मैक्रोज़] (http://dunsmor.com/lisp/onlisp/onlisp_21.html) पर एक नज़र डालने से शुरू करें। आपको [मेरा जवाब] भी मिल सकता है (http://stackoverflow.com/a/19321377/1281433) [प्रतीकों को परिभाषित करने के लिए जो प्रतीक मैक्रो द्वारा (और) की तरह काम करेंगे?] (Http://stackoverflow.com/ क्यू/1 9 319277/1281433) सहायक। –

उत्तर

9

हाइपरस्पेक, 2.4 Standard Macro Characters में, "समरूप कार्यान्वयन में शुरू में परिभाषित मैक्रो वर्ण" का वर्णन करता है। आप set-macro-character का उपयोग करके अपना खुद का परिभाषित कर सकते हैं, जो ' जैसे प्रकारों को संभालता है, जिनमें उनके लिए "उपसर्ग" नहीं है, और set-dispatch-macro-character, जो एक प्रेषण वर्ण (आमतौर पर #) द्वारा उपसर्ग किए गए प्रकार को संभालता है।

हाइपरस्पेक के अतिरिक्त, आप पॉल ग्राहम के से लिस्प पर Chapter 17, Read Macros पा सकते हैं। यह ' के कार्यान्वयन के साथ शुरू होता है, यानी, मैक्रो चरित्र जो (quote ...) तक फैलता है। How to define symbols that will work like (and) by symbol macro? के उत्तर भी सहायक हैं, क्योंकि सेट-मैक्रो-कैरेक्टर के कुछ उपयोग हैं।

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