चाहे यह setq
और setf
जैसा है या नहीं? flet
और labels
के बीच कोई बड़ा अंतर नहीं है?आम लिस्प में "फलेट" और "लेबल" के बीच क्या अंतर है?
ईमानदारी से!
चाहे यह setq
और setf
जैसा है या नहीं? flet
और labels
के बीच कोई बड़ा अंतर नहीं है?आम लिस्प में "फलेट" और "लेबल" के बीच क्या अंतर है?
ईमानदारी से!
कॉमन लिस्प में, दोनों flet
और labels
थोड़ा अलग तरह की शाब्दिक बाइंडिंग बनाने:
flet
स्थानीय समारोह बंधन के लिए एक विशेष रूप है। बाइंडिंग रिकर्सिव नहीं हैं और एक दूसरे को संदर्भित नहीं कर सकते। प्रत्येक बाध्यकारी में फ़ंक्शन का नाम, तर्क, और फ़ंक्शन बॉडी होता है।
labels
स्थानीय फ़ंक्शन बाध्यकारी के लिए एक विशेष रूप है। बाइंडिंग रिकर्सिव हो सकती है और एक दूसरे को का संदर्भ दे सकती है। प्रत्येक बाध्यकारी में फ़ंक्शन का नाम, तर्क, और फ़ंक्शन बॉडी होता है।
Emacs Lisp में, एक छोटा अंतर है। लेबल फ़ॉर्म फ़लेट जैसा है, सिवाय इसके कि यह गतिशील बाइंडिंग के बजाय फ़ंक्शन नामों की शब्दावली बाइंडिंग बनाता है।
लेबल पर फ़ैलेट पर एक लाभ यह है कि यदि आप फ़ंक्शन के साथ फ़ंक्शन 'foo' परिभाषित करते हैं, तो यह उस स्कोप में' foo' नामक किसी अन्य फ़ंक्शन को संदर्भित कर सकता है, जबकि लेबल के साथ यह स्वयं ही संदर्भित होगा। –
सवाल आम लिस्प के बारे में स्पष्ट रूप से था, * नहीं * Emacs Lisp। पहले अनुच्छेद को हटाने के लिए अच्छा होगा, क्योंकि यह भ्रम पैदा कर सकता है। कई लिस्प बोलीभाषाएं हैं - यह प्रश्न आम लिस्प के बारे में है। – Drew