這是實現與LISP的「貓」命令的代碼,如本書ANSI Common Lisp解釋,第122頁。爲什麼在Lisp中爲了讀取文件而使read-line運行兩次?
(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))))
爲什麼讀線功能運行兩次?我試圖用只讀一行來運行它,但是Lisp無法完成代碼。
多個連接並使用格式創建新字符串真的很浪費。不要這樣做。 – 2010-09-25 23:43:21
這是一個錯誤的方法,因爲它會產生錯誤的結果。例如。如果您在linux或windows中傳遞命名管道的名稱,它可能不會立即準備好輸入,因此listen將返回NIL,並且函數將返回而不實際複製任何內容。 – 2010-09-26 08:31:31