2010-10-13 10 views
6

लिस्प में एक अनौपचारिक सशर्त का उदाहरण क्या होगा? कृपया कोड भी समझाएं।लिस्प में एक अनौपचारिक सशर्त का उदाहरण क्या होगा?

+1

मैं केवल "अनौपचारिक" शब्द से परिचित हूं क्योंकि यह प्राकृतिक भाषाओं से संबंधित है - उदाहरण के लिए, एक सर्वनाम को पहले उल्लिखित संज्ञा का एक अनौपचारिक संदर्भ माना जा सकता है। "जॉन एक प्रोग्रामर है। वह Google के लिए काम करता है।" इस उदाहरण में, "वह" "जॉन" का एक अनौपचारिक संदर्भ है। इसलिए मुझे लगता है कि आपको लिस्प प्रोग्रामिंग के संदर्भ में "अनौपचारिक सशर्त" का अर्थ समझाने की आवश्यकता है - यह आमतौर पर उपयोग नहीं किया जाने वाला शब्द नहीं है। –

+0

** @ जिम_ लुईस: ** यहां व्याख्या है कि लिस्प प्रोग्रामिंग के संदर्भ में "अनौपचारिक सशर्त" का अर्थ क्या है: http://weblogs.java.net/blog/2006/06/29/more-literate-programming-भाषा- लेवल-एनाफोरा – blunders

+2

@ जिम लुईस: अनजाने में, मैक्रोज़ का जिक्र करते समय * अनौपचारिक * का अर्थ है। लिंक और उदाहरण के लिए मेरा जवाब देखें। –

उत्तर

4

एक उदाहरण सामान्य लिस्प LOOP है:

(loop for item in list 
     when (general-predicate item) 
     collect it) 

चर IT परीक्षण अभिव्यक्ति के मूल्य है। यह एएनएसआई कॉमन लिस्प LOOP सुविधा की एक विशेषता है।

उदाहरण:

(loop for s in '("sin" "Sin" "SIN") 
     when (find-symbol s) 
     collect it) 

रिटर्न

(SIN) 

क्योंकि केवल "SIN" एक मौजूदा प्रतीक है, यहाँ प्रतीक SIN के लिए एक नाम है। सामान्य लिस्प प्रतीक नामों में डिफ़ॉल्ट रूप से आंतरिक रूप से अपरकेस नाम होते हैं।

+0

** @ Rainer_Joswig: ** वाह, धन्यवाद - यह मेरे लिए आश्चर्यजनक रूप से स्पष्ट था। फिर से धन्यवाद!! – blunders

+0

** @ Rainer_Joswig: ** आपके अनुभव से, आपके लिए LISP सीखने का सबसे अच्छा तरीका क्या है? – blunders

9

पॉल ग्राहम के On Lisp पर Anaphoric Macros पर एक अध्याय है।

अनिवार्य रूप से, यह दोहराए जाने वाले बयान लिखने का एक लघु तरीका है जो कोड दोहराने से बचाता है। उदाहरण के लिए, की तुलना:

(let ((result (big-long-calculation))) 
    (if result 
     (foo result))) 

और

(if (big-long-calculation) 
    (foo it)) 

जहां it एक विशेष नाम है कि जो कुछ सिर्फ (big-long-calculation) में गणना की गई थी के लिए संदर्भित करता है।

+0

** @ ग्रेग हेगिल: ** धन्यवाद, पॉल ग्राहम के कोड में अभी भी खो गया है, लेकिन यह प्रक्रिया करना मजेदार है। – blunders

+2

@ ब्लंडर्स: दरअसल। एनाफोरिक मैक्रोज़ शायद शुरू करने के लिए सबसे अच्छी जगह नहीं है, जब तक कि आप लिस्प में मैक्रोज़ की विभिन्न शैलियों से पहले से ही परिचित नहीं हैं। लिस्प पर एक महान पढ़ा है। –

+0

** @ ग्रेग हेगिल: ** सहमत हैं। मैंने कुछ एलआईएसपी किताबें स्कैन की हैं, मुख्य रूप से द लिटिल शेमर, और इसी तरह। "अनौपचारिक सशर्त" यादृच्छिक रूप से इस प्रश्न के लिए शोध करने में आया: http://stackoverflow.com/questions/3920046/is-it-common-for-a-language-to-evalute-undefined-as-equal-to- झूठी-अगर-तो-क्यों - – blunders

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