comparison - Emacs Lisp: difference between (function (lambda ...)) and (lambda ...)? -
के बीच अंतर क्या है (फ़ंक्शन (लैम्ब्डा ...)) और
(लैम्ब्डा ...)
और
'( "पोस्ट-पाठ" आइटमप्रॉप = "टेक्स्ट"> ये बहुत विनिमेय हैं इसका उत्तर यह है कि फ़ंक्शन
सक्षम लैम्ब्डा को बाइट में संकलित किया जाता है, जबकि अन्य दो (और समतुल्य) नहीं करते हैं। नोट: इसका अर्थ यह नहीं है कि फ़ंक्शन वास्तव में बाइट को लैम्ब्डा संकलित करता है। यह कैसे एक हो सकता है? थोड़ा इमाक्स लिस्पी आत्मनिरीक्षण कुछ सुराग प्रदान करता है।
(फ़ंक्शन आर्ग) फ़ंक्शन 'सी स्रोत कोड' में एक विशेष प्रकार है।
P>
'बोली' की तरह, लेकिन वस्तुओं के लिए पसंदीदा जो फ़ंक्शन हैं बाइट संकलन में, 'फ़ंक्शन' संकलित होने के लिए उसके तर्क का कारण बनता है। 'कोट' ऐसा नहीं कर सकता।
ठीक है, तो यह (फ़ंक्शन (लैम्ब्डा ...)) और "(लैम्ब्डा ..) में अंतर है। ।)
, पहले बाइट संकलक बताता है कि वह अभिव्यक्ति को सुरक्षित रूप से संकलित कर सकता है। जबकि ' संपादन की अभिव्यक्तियों को संकलित नहीं किया जा सकता है (क्योंकि वे संख्याओं की एक सूची हो सकती है।
केवल बेअर (लैम्ब्डा ...) के बारे में क्या < डॉकस्ट्रिंग] [इंटरेक्टिव] बॉडी) एक लैम्ब्डा एक्सप्रेशन लौटें। प्रपत्र (लैम्ब्डा एल्ग्स डॉकस्ट्रिंग इंटरेक्टिव बॉडी) की एक कॉल स्व-उद्धृत है; लैम्ब्डा एक्सप्रेशन का मूल्यांकन करने का परिणाम ही अभिव्यक्ति है। लैम्ब्डा अभिव्यक्ति को तब फ़ंक्शन के रूप में माना जा सकता है, अर्थात्, प्रतीक के फ़ंक्शन वैल्यू के रूप में संग्रहीत किया जाता है, जिसे 'मस्ककॉल' या 'मैपरकार' आदि के पास रखा जाता है।
इसलिए, (लैम्ब्डा ...)
और '(लैम्ब्डा ...)
समान हैं।
इसके अलावा, संकेतन #' (लैम्ब्डा ...) है
, जो (फ़ंक्शन (लैम्ब्डा ...)) के लिए वाक्यविन्यास चीनी है
।
Emacs lisp में फ़ंक्शन के बारे में अधिक जानकारी के लिए, पढ़ें।
बस के लिए यह सब जांचें, आप निम्नलिखित को * खरोंच * बफर में टाइप कर सकते हैं और अभिव्यक्तियों का मूल्यांकन कर सकते हैं:
(caddr '(लैम्ब्डा (x) (+ xx))) (+ xx) (caddr (लैम्ब्डा (x) (+ xx)) (+ xx) (caddr (function (लैम्ब्डा (x) (+ xx))) (+ xx) (बराबर '(लैम्ब्डा (x) (+ xx)) (कार्य (लैम्ब्डा (एक्स) (+ xx))) टी (बराबर '(लैम्ब्डा (एक्स) (+ xx)) (लैम्ब्डा (एक्स) (+ xx)))
, लैम्ब्डा का उपयोग करने के सभी तीन रूपों को सिर्फ सूचियों का निर्माण कर सकते हैं जिन्हें फ़ंक्शन के रूप में इस्तेमाल किया जा सकता है (जिनमें से एक बाइट संकलित हो सकता है)।
Comments
Post a Comment