在WINDOWS上只读1个字符

我的目标是从用户收集信息的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环境来尝试这个,我不知道该怎么建议,除此之外这可能是你的终端,换行编码或类似的问题。