Tôi có đoạn code sau Common Lisp:Khi nào định dạng thực sự in trong Common Lisp?
(defun micro-read-eval-print()
(format t "Micro > ")
(let ((form (read-line)))))
Khi tôi chạy nó, tôi nhận được như sau:
CL-USER> (micro-read-eval-print)
(m-quote a)
Micro > NIL
Lưu ý rằng tôi gõ vào "(m-quote a)", trong khi Đầu ra thông dịch Lisp "Micro> NIL".
Bây giờ, tôi đã dự kiến những sự kiện này sẽ xảy ra theo thứ tự ngược lại. Tôi đã có thể mong đợi "Micro>" đã được in đầu tiên kể từ khi tuyên bố định dạng đến trước. Tại sao nó không được in đầu tiên? Và tôi phải làm gì để đảm bảo nó được in trước?
Phải, việc triển khai có thể sử dụng các luồng IO được đệm và không cần ép buộc đầu ra sau một định dạng hoặc trước khi đọc. Vì vậy, đối với mã di động người ta phải gọi một cái gì đó như lực lượng đầu ra hoặc kết thúc-đầu ra. –