Đây là mã để thực hiện các lệnh 'mèo' với lisp, như được giải thích trong cuốn sách ANSI Common Lisp, trang 122.Tại sao đọc dòng chạy hai lần để đọc từ một tệp trong Lisp?
(defun pseudo-cat (file) (with-open-file (str file :direction :input) (do ((line (read-line str nil 'eof) (read-line str nil 'eof))) ((eql line 'eof)) (format t "~A~%" line))))
Tại sao là chức năng đọc dòng chạy hai lần? Tôi đã cố gắng chạy nó chỉ với một dòng đọc, nhưng Lisp không thể hoàn thành mã.
nhiều cuộc trò chuyện và sử dụng định dạng để tạo chuỗi mới thực sự lãng phí. Đừng làm thế. –
Đó là một cách tiếp cận sai vì nó sẽ tạo ra kết quả sai. Ví dụ. nếu bạn vượt qua tên của ống được đặt tên trong linux hoặc windows, nó có thể sẽ không được immediatelly sẵn sàng cho đầu vào, do đó nghe sẽ trả về NIL và chức năng sẽ trở lại mà không thực sự sao chép bất cứ điều gì. –