Ich habe folgende Common Lisp Code:Wann Druckformat tatsächlich in Common Lisp?
(defun micro-read-eval-print()
(format t "Micro > ")
(let ((form (read-line)))))
Wenn ich es laufen, erhalte ich folgendes:
CL-USER> (micro-read-eval-print)
(m-quote a)
Micro > NIL
Bitte beachte, dass ich eingegeben "(m-Zitat a)", während die Lisp Interpreter Ausgabe "Micro> NIL".
Nun würde ich diese Ereignisse zu erwarten in der umgekehrten Reihenfolge geschehen. Ich hätte erwartet, dass "Micro>" zuerst gedruckt wurde, da die Formatanweisung zuerst kommt. Warum wird es nicht zuerst gedruckt? Und was muss ich tun, um sicherzustellen, dass es zuerst gedruckt wird?
Recht kann Implementierungen IO-Streams gepuffert verwenden und muß nicht ausgegeben, nachdem ein Format erzwingen oder vor einem Lese. Also muss man für den portablen Code etwas wie Force-Output oder Finish-Output nennen. –