这是实现与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