Input 如何在LispWorks中正确询问用户的输入?

Input 如何在LispWorks中正确询问用户的输入?,input,lisp,common-lisp,lispworks,Input,Lisp,Common Lisp,Lispworks,我有以下代码: (defvar x) (setq x (read)) (format t "this is your input: ~a" x) 它在Common Lisp中可以正常工作,但LispWorks显示了以下错误: End of file while reading stream #<Synonym stream to *BACKGROUND-INPUT*>. 读取流时文件结束#。 我的意思是我试过这个:做一个函数。但仍然显示相同的错误 我希望任何

我有以下代码:

(defvar x)
(setq x (read))
(format t "this is your input: ~a" x)
它在Common Lisp中可以正常工作,但LispWorks显示了以下错误:

End of file while reading stream #<Synonym stream to
*BACKGROUND-INPUT*>.
读取流时文件结束#。
我的意思是我试过这个:做一个函数。但仍然显示相同的错误


我希望任何人都能帮助我。

您可能将这三行代码写到编辑器中,然后进行编译

因此,您可以将此函数写入编辑器:

(defun get-input ()
  (format t "This is your input: ~a" (read)))
编译编辑器并从侦听器(REPL)调用此函数

您还可以像这样使用
*查询io*
流:

(format t "This is your input: ~a" (read *query-io*))
如果在Listener中调用这一行,它的行为类似于
read
。若你们在编辑器中调用它,它会显示一个小提示“输入某物:”

如您所见,不需要全局变量。如果需要使用该给定值执行某些操作,请使用,这将创建本地绑定:

(defun input-sum ()
  (let ((x (read *query-io*))
        (y (read *query-io*)))
    (format t "This is x: ~a~%" x)
    (format t "This is y: ~a~%" y)
    (+ x y)))
还可以考虑使用,它接受输入并将其作为字符串返回:

CL-USER 19 > (read-line)
some text
"some text"
NIL

CL-USER 20 > (read-line)
5
"5"
NIL

您可能将这三行代码写入编辑器,然后进行编译

因此,您可以将此函数写入编辑器:

(defun get-input ()
  (format t "This is your input: ~a" (read)))
编译编辑器并从侦听器(REPL)调用此函数

您还可以像这样使用
*查询io*
流:

(format t "This is your input: ~a" (read *query-io*))
如果在Listener中调用这一行,它的行为类似于
read
。若你们在编辑器中调用它,它会显示一个小提示“输入某物:”

如您所见,不需要全局变量。如果需要使用该给定值执行某些操作,请使用,这将创建本地绑定:

(defun input-sum ()
  (let ((x (read *query-io*))
        (y (read *query-io*)))
    (format t "This is x: ~a~%" x)
    (format t "This is y: ~a~%" y)
    (+ x y)))
还可以考虑使用,它接受输入并将其作为字符串返回:

CL-USER 19 > (read-line)
some text
"some text"
NIL

CL-USER 20 > (read-line)
5
"5"
NIL

CommonLisp是一种语言,而不是一种实现。LispWorks是公共Lisp的一个实现。如果你发布了一个错误,你需要给我们一个可复制的测试用例,以及你如何运行你的代码。LispWorks是公共Lisp的一个实现。如果你发布了一个错误,你需要给我们一个可复制的测试用例,以及你是如何运行代码的。非常感谢。非常感谢。