这是用 lisp 实现“cat”命令的代码,如书 ANSI Common Lisp 中所述。 , 第 122 页。
(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))))
为什么 read-line 函数运行了两次?我试图只用一个读取行来运行它,但是 Lisp 无法完成代码。
最佳答案
DO变量的语法是:变量,初始化形式,更新形式。在这种情况下,初始化表单与更新表单相同。但是在 DO 中没有这种情况的简写,所以你必须把它写出来。
关于input - 为什么 read-line 运行两次以从 Lisp 中的文件中读取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3795954/