pro*_*eek 6 lisp input 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))))
为什么读取线功能运行两次?我尝试只使用一个读取线运行它,但Lisp无法完成代码.
您需要阅读DO的语法:http://www.lispworks.com/documentation/HyperSpec/Body/m_do_do.htm
第一个READ-LINE表单是init-form,第二个是step-form.因此,在第一次迭代中,变量被设置为init-form的结果.在下一次迭代中,变量设置为步骤形式的值.