Mam następujący wspólny kod Lisp:Kiedy format faktycznie się drukuje w Common Lisp?
(defun micro-read-eval-print()
(format t "Micro > ")
(let ((form (read-line)))))
Kiedy go uruchomić, pojawia się następujący:
CL-USER> (micro-read-eval-print)
(m-quote a)
Micro > NIL
pamiętać, że wpisany w "(m-quote a)", natomiast Wyjście interpretera Lisp "Micro> NIL".
Teraz oczekiwałbym, że te wydarzenia się zdarzą w odwrotnej kolejności. Spodziewałbym się, że "Micro>" zostanie wydrukowane jako pierwsze, ponieważ deklaracja formatu jest najważniejsza. Dlaczego nie jest drukowany jako pierwszy? I co muszę zrobić, aby upewnić się, że zostanie wydrukowany pierwszy?
Dobrze, implementacje mogą wykorzystywać buforowane strumienie IO i nie wymagają wymuszania wyjścia po formacie lub przed odczytem. Tak więc dla przenośnego kodu trzeba wywołać coś takiego jak siła-wyjście lub zakończenie-wyjście. –