मुझे एक समारोह में कुछ सलाह देने में मज़ा आ रहा था:
(advice-add 'executable-find :around
(lambda (f &rest args)
(apply g args)))
;;; ^
आउच, एक टाइपो। इसे ठीक किया और फिर से कोड के ऊपर मूल्यांकन किया। लेकिन अब मेरे पास दोनों, "सही" और उस फ़ंक्शन के आसपास "टूटी हुई" सलाह है।
मैं इनसे कैसे छुटकारा पाऊं? यह देखते हुए कि advice-remove
फ़ंक्शन ऑब्जेक्ट या आसपास की सलाह की आवश्यकता है (जो यहां खाली है)?
(स्पष्ट रूप से मैं बस छोड़ सकता हूं और पुनः आरंभ कर सकता हूं, लेकिन इसका एक और तरीका है, क्या यह है?)
eq
जो पिछले वाले को नहीं मिलता है, (2) सलाह-निष्कासन आपको उस फ़ंक्शन की तुलना करेगा जब तक कि वह इसे नहीं मिल जाता। एक यह है किeq
इसे हटा दें और (3), भले ही सलाह-हटाएं एक अलग परीक्षण का उपयोग करें, जैसेequal
, यह अभी भी काम नहीं करेगा, क्योंकि एक लैम्ब्डा फॉर्म के विभिन्न मूल्यांकनequal
एक दूसरे को नहीं करेंगे । निकला (1) सही है, लेकिन (2) और (3) गलत हैं: सलाह-उपयोग का उपयोग करता हैequal
, और उसी परिणाम काlambda
दो बार मूल्यांकन करता हैequal
!