2015-04-21 12 views
8

में `और` के साथ `संतुष्टि 'का उपयोग करके मैंने Google Common Lisp Style Guide में पढ़ा है (अंतिम अनुभाग देखें) कि and के संबंध में सामान्य लिस्प मानक में एक प्रकार की गलती है। अर्थात्, कि यह नहीं "शॉर्ट सर्किट", या समतुल्य करता मूल्यांकन के इसी क्रम, इसकी गारंटी नहीं है क्या example में माना जाता है के विपरीत:सामान्य लिस्प

(and integer (satisfies evenp)) 

हालांकि, CLtL2 की section 4.4 को देखते हुए यह कहा जाता है कि

जब typepand टाइप विनिर्देशक को संसाधित करता है, तो यह हमेशा बाएं से दाएं क्रम में प्रत्येक घटक प्रकार का परीक्षण करता है और जैसे ही चौराहे के एक घटक को प्रसंस्करण बंद कर दिया जाता है, जिसमें प्रश्न में वस्तु संबंधित नहीं होती है।

और अनुभाग आगे बताता है कि यह त्रुटियों से बचने के लिए satisfies को किसी अन्य प्रकार से फ़िल्टर करने की अनुमति देने के लिए ठीक है।

क्या मैं सुरक्षित रूप से यह मान सकता हूं कि यह Google स्टाइल गाइड में एक गलती है, या क्या CLTL2 के बाद व्यवहार बदल गया है?

उत्तर

8

मुझे कुछ साल पहले भी यही समस्या थी।

मुझे एएनएसआई सीएल में कुछ भी नहीं मिला जो फ़िल्टरिंग फ़िल्टर करने का समर्थन करेगा। लेकिन अंक भी कोई परिवर्तन नहीं करता है। आपके द्वारा उल्लिखित उदाहरण CLTL2 व्याख्या मानता है।

इस प्रकार यह मानना ​​समझ में आता है कि एक कंपाइलर प्रकारों को पुन: व्यवस्थित कर सकता है और यह CLTL2 से बदल गया है।