我的目标是从用户收集信息的function。
到目前为止,我有这样的:
(defun prompt-read (prompt) (format *query-io* "~a: " prompt) (force-output *query-io*) (read-line *query-io*))
女巫输出:
CG-USER(27): (prompt-read "cenas") cenas: lol "l" T
有两件事我不明白在这里:
1 – 为什么只读取第一个字符?
2 – 为什么在写入string“lol”以使函数正常工作后,必须按两次ENTER?
我使用Allegro CL Free Express Edition 9.0和Windows 8 – 64位。
编辑:在linux机器上试了这个后,输出是我所期望的,只有一个ENTER是必需的,但是我仍然想在Windows环境中理解这种行为。
我在CCL(Linux)和Allegro企业版9.0(Linux)上尝试过你的例子,在这两种情况下,它都返回:
"lol" NIL
NIL
可能是信息丰富的,因为它与你的输出有所不同 – 你得到了T,这意味着缺少新行,这很奇怪。
http://clhs.lisp.se/Body/f_rd_lin.htm
不幸的是,没有Windows环境来尝试这个,我不知道该怎么建议,除此之外这可能是你的终端,换行编码或类似的问题。