J'ai le code Lisp commun suivant:Quand le format imprime-t-il réellement en Common Lisp?
(defun micro-read-eval-print()
(format t "Micro > ")
(let ((form (read-line)))))
Quand je cours, je reçois le texte suivant:
CL-USER> (micro-read-eval-print)
(m-quote a)
Micro > NIL
Notez que je tapé "(m-citation a)", alors que le Sortie interpréteur Lisp "Micro> NIL".
Maintenant, je m'attendais à ce que ces événements se produisent dans l'ordre inverse. Je m'attendais à ce que "Micro>" soit imprimé en premier puisque la déclaration de format vient en premier. Pourquoi n'est-il pas imprimé en premier? Et que dois-je faire pour m'assurer qu'il est imprimé en premier?
À droite, les implémentations peuvent utiliser des flux d'E/S bufférisés et n'ont pas besoin de forcer la sortie après un format ou avant une lecture. Donc, pour le code portable, il faut appeler quelque chose comme la sortie de force ou la sortie de sortie. –