我的目标是收集用户信息的功能。
到目前为止,我有这个:
(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 - 为什么在写完字符串“lol”后我必须按两次ENTER才能使该功能起作用?
我正在使用Allegro CL Free Express Edition 9.0和Windows 8 - 64位。
编辑:在linux机器上尝试后,输出是我所期望的,只需要一个ENTER,但是我仍然想在windows环境中理解这种行为。答案 0 :(得分:1)
我在CCL(Linux)和Allegro Enterprise Edition 9.0(Linux)上尝试了您的示例,并且在两种情况下它都返回了:
"lol"
NIL
NIL
可能是提供信息的,因为它与你的输出不同 - 你有T,这意味着缺少换行,这很奇怪。
http://clhs.lisp.se/Body/f_rd_lin.htm
不幸的是,如果没有Windows环境来尝试这一点,我不确定建议什么,除此之外,这可能是您的终端,换行编码或类似问题的某种问题。