2010-11-07 12 views
5

मैं सिर्फ लिस्प सीखने शुरू कर दिया और मैं कोड का निम्न भाग को समझने के लिए नहीं लग रहे:सामान्य लिस्प में काम कैसे जोड़ता है?

(setf y (loop for x in y 
       for z = (something) 
       unless (condition for z) 
       append z)) 

कहाँ z जोड़ दिया जाता है?

+2

प्रत्येक पुनरावृत्ति में सभी जेड संलग्न किए गए हैं और एक सूची के रूप में लौटाए गए हैं ... –

उत्तर

10

लूप समाप्त होने पर इसे वापस करने के लिए एक अनाम सूची में जोड़ा जाता है। पहली सन्निकटन के रूप में, आप के लिए

(loop ... append z into result finally (return result)) 

append यहाँ एक आशुलिपि के रूप में इसके बारे में सोच सकते हैं एक पाश कीवर्ड है, यह append फ़ंक्शन से संबंधित नहीं है, वही नाम साझा करने के अलावा --- इसलिए फ़ंक्शन के बजाय यह loop मैक्रो है जो यह तय करता है कि यह कैसे काम करता है।

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