Common lisp 逐行读取文件,等待键盘输入读取下一行

Common lisp 逐行读取文件,等待键盘输入读取下一行,common-lisp,Common Lisp,一个新手问题:CommonLisp一次读取一行文件,然后通过击键移动到下一行 有一个标准: (let ((in (open "/some/file/name.txt" :if-does-not-exist nil))) (when in (loop for line = (read-line in nil) while line do (format t "~a~%" line)) (close in))) 在旧的Fortran中,我习惯了等待函数,它在等待

一个新手问题:CommonLisp一次读取一行文件,然后通过击键移动到下一行

有一个标准:

(let ((in (open "/some/file/name.txt" :if-does-not-exist nil)))
  (when in
    (loop for line = (read-line in nil)
        while line do (format t "~a~%" line))
    (close in)))
在旧的Fortran中,我习惯了等待函数,它在等待时会在某处起作用

Clojure中有通过java.io实现的解决方案

但是普通的Lisp呢?

首先,应该始终使用 而不是 /

接下来,ANSI CL标准没有指定i/o缓冲,因此 没有标准方法使CL对每次击键作出反应。 但是,您可以要求用户按Enter键或Return键:


附带问题:如果我们在某些CL中没有缓冲,但在其他标准中没有缓冲,我们是否能够对输入做出反应而不打印该输入?@RainerJoswig:如果你有一个兄弟,他会喜欢土豆吗-非常感谢你。不同语言之间的i/o内容差别很大,因此这确实非常重要。
(with-open-file (in path)
  (loop for line = (read-line in nil nil)
    while line do
      (read-line)               ; wait for user to hit RET
      (format t "--> ~A~%" line)))