input - 为什么 read-line 运行两次以从 Lisp 中的文件中读取?

标签 input lisp common-lisp

这是用 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/

相关文章:

android - 通过耳机插孔将音频输入到 android 智能手机?

jQuery - 自动调整大小的文本输入(不是 textarea!)

android - 如何完全隐藏用于将输入类型更改为数字 SIP 的 EditText

java - 如何在知道包的情况下使 Lisp 函数调用 java?

emacs - 在宏环境中强制扩展宏

recursion - 这个 lisp 示例是否以尾递归为特色?

c++ - 读取数字到 vector

clojure - GC 是否在 Clojure 中删除 ns 后删除所有对象?

common-lisp - 如何找到所有可用的系统?

methods - 如何使用标准函数调用方法对象