LISP Do function behaviour? -
मेरे पास यह सूची कोड ब्लॉक है।
(defun test (y) (करू ( (एल एनआईएल (सेटिक वाई (आराम वाई)))) ((नल वाई) 1) (सेटिक एल (ऐपेंड एल '(1 1))) (प्रिंट एल)))
और आउटपुट नीचे चित्रित किया गया है। किसी कारण के लिए यह वाई की स्थापना कर रहा है और फिर 'appending' (1 1)। क्या कोई इस व्यवहार को समझा सकता है?
एक do
लूप की संरचना है:
(करू ( (वैर इनिट-फॉर्म स्टेप-फॉर्म)) (समाप्ति-फार्म का नतीजा-फॉर्म) (बॉडी))
मुझे लगता है कि जो कुछ आप खो रहे हैं वह यह है कि step-form हर चलन पर निष्पादित होता है और इस फ़ॉर्म के परिणाम चर पर सेट होता है तो
setq
में स्टेप-फ़ॉर्म
में एक झंडा है, जो शायद आप जो इरादा रखते हैं वह नहीं कर रहे हैं।
इस प्रकार से लूप का क्रम (परीक्षण '(2 3 4))
है (प्रिंट छिपाना)
- शून्य से प्रारंभ करने के लिए एल - चेक (शून्य y) जो y = (2 3 4) - (सेटिक एल (एपेंड एल '(1 1))) एल में अब मान है' (1 1) - चरण फॉर्म निष्पादित करें, यह सेट y = '(3 4) _and_ l =' (3 4) - (शून्य वाई) अभी भी गलत है - (सेटिक एल (एपेंड एल '(1 1))) सेट एल =' (3 4 1 1) - चरण फ़ॉर्म निष्पादित करें, y = '(4) _and_ l =' (4) - (सेटिक एल '(1 1))) सेट एल =' (4 1 1) - चरण फॉर्म निष्पादित करें, y = () तो लूप समाप्त होता है
Comments
Post a Comment