windows - read-line 在 WINDOWS 上只读取 1 个字符

标签 windows lisp common-lisp

我的目标是从用户那里收集信息的功能。

到目前为止我有这个:

(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 - 为什么 read-line 只获取第一个字符?

2 - 为什么我必须在输入字符串“lol”后按两次 ENTER 才能使函数正常工作?

我使用的是 Allegro CL Free Express Edition 9.0 和 Windows 8 - 64 位。

编辑:在 linux 机器上尝试此操作后,输出符合我的预期,只需要一个 ENTER,但是我仍然想了解 Windows 环境中的这种行为。

最佳答案

我在 CCL (Linux) 和 Allegro Enterprise Edition 9.0 (Linux) 上试过你的例子,在这两种情况下它都返回了:

“哈哈” 零

NIL 可能提供信息,因为它与您的输出不同——您得到的是 T,这意味着缺少换行符,这很奇怪。

http://clhs.lisp.se/Body/f_rd_lin.htm

不幸的是,没有 Windows 环境来尝试这个,我不确定该建议什么,除此之外,这可能是您的终端、换行符编码或类似问题的某种问题。

关于windows - read-line 在 WINDOWS 上只读取 1 个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27194007/

相关文章:

windows - Emacs + 史莱姆 + SBCL ( Windows )

windows - 注册码 : single computer, 多次安装

windows - 如何从 Git Gui 打开 Git Bash?

scheme - LISP 中以索引作为参数之一的映射函数

scheme - Lisp中'quote的含义

sockets - Clozure Common Lisp-TCP套接字编程-发送答复

windows - 最上面的两个窗口。这表明?

clojure - Clojure 中的惰性序列是如何实现的?

LISP 列表子列表

debugging - 如何在 [Clozure] Common Lisp 中调试?