2010-10-02 8 views
5

Practical Common Lisp pagina 25, spiega WITH-STANDARD-IO-SYNTAX come segue. "Assicura che determinate variabili che influenzano il comportamento di PRINT siano impostate sui loro valori standard".Per che cosa è la macro WITH-STANDARD-IO-SYNTAX?

L'utilizzo è il seguente.

(with-open-file (...) 
    (with-standard-io-syntax 
     (print ... 

caso (stampa) essere utilizzato in questa macro? Se no, cosa succederebbe?

risposta

6

Diverse variabili dinamiche influenzano l'uscita prodotta da print. with-standard-io-syntax assicura che tali variabili siano impostate sui valori predefiniti.

Ad esempio:

(let ((list '(1 2 3 4 5 6 7 8 9 10)) 
     (*print-length* 5)) 
    (print list) 
    (with-standard-io-syntax 
    (print list))) 

Stampe:

(1 2 3 4 5 ...) 
(1 2 3 4 5 6 7 8 9 10) 

E 'particolarmente importante se si sta stampando le cose con l'intenzione di essere in grado di read in un secondo momento (come con prin1).