2013-07-02 7 views
5

CLHS dicePerché il cerchio di stampa è impostato su zero?

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

E poi c'è questo:

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

A quanto pare, avendo *print-circle* set a zero porta a sorprese. Perché *print-circle* è impostato su zero per impostazione predefinita su molti sistemi? Cosa può andare storto se lo imposto a livello globale fin dall'inizio del mio codice?

risposta

8

Se si imposta *print-circle* su true, tutte le funzioni di output devono eseguire il controllo del ciclo. Ciò significa che potrebbero rallentare e prendere più memoria.

Se non si utilizzano effettivamente strutture circolari (e io non sono un professionista Lisp, ma io tendo ad evitarli come la peste), non vorrei attivare il ciclo di controllo nel codice di produzione.