2013-07-02 10 views
5

CLHS कहतेप्रिंट-सर्कल डिफ़ॉल्ट क्यों है?

An attempt to print a circular structure with *print-circle* set 
to nil may lead to looping behavior and failure to terminate. 

और फिर वहाँ इस है:

Why does this Lisp macro as a whole work, even though each piece doesn't work?

जाहिर है, होने *print-circle* शून्य करने के लिए सेट आश्चर्य होता है। *print-circle* क्यों कई सिस्टम पर डिफ़ॉल्ट रूप से शून्य पर सेट है? अगर मैं अपने कोड की शुरुआत से इसे वैश्विक स्तर पर सेट करने के लिए सेट करता हूं तो क्या गलत हो सकता है?

उत्तर

8

यदि आप *print-circle* को सत्य पर सेट करते हैं, तो आपके सभी आउटपुट फ़ंक्शंस को चक्र जांच करना पड़ता है। इसका मतलब है कि वे धीमा हो सकते हैं और अधिक स्मृति ले सकते हैं।

यदि आप वास्तव में परिपत्र संरचनाओं का उपयोग नहीं करते हैं (और मैं एक लिस्प प्रो नहीं हूं, लेकिन मैं उन्हें प्लेग की तरह टालना चाहता हूं), तो मैं उत्पादन कोड में चक्र जांच चालू नहीं करूंगा।

संबंधित मुद्दे