Input 球拍中的真实标准输入

Input 球拍中的真实标准输入,input,racket,Input,Racket,看来球拍无法从标准输入中读出一根弦 $ racket Welcome to Racket v6.4. -> (define (s) (read-line)) 好的,s是调用readline的别名 -> (printf "You entered: ~a\n" s) You entered: 失败:字符串已打印,但球拍未等待按键/STDIN/EOF/EOL -> (define n (read)) a -> n 'a 失败:调用read并等待EOF

看来球拍无法从标准输入中读出一根弦

$ racket
Welcome to Racket v6.4.
-> (define (s) (read-line))         
好的,
s
是调用
readline
的别名

-> (printf "You entered: ~a\n" s) 
You entered: 
失败:字符串已打印,但球拍未等待按键/STDIN/EOF/EOL

-> (define n (read))
a
-> n
'a
失败:调用
read
并等待EOF/EOL,然后分配给
n
,但
n
分配的是符号
'a
而不是字符串文字
a

-> (read-line)
""
失败:调用
readline
不等待STDIN,只返回空字符串

-> (read-string 5)
asdasdasdasd
"\nasda"
; sdasdasd: undefined;
;  cannot reference undefined identifier
; [,bt for context]
失败:只读取5个字节的STDIN,显然
eval
s它的其余部分

-> (read-string 500000)
asdasd
asdasdaas
a
asdasd
asdasd


asdasd
失败:直到读取了500000字节才返回,并且在EOL时不返回。
有点像Python的
input()
在找到
EOL
时返回字符串,或者是类似的
readln
,如何从
当前输入端口读取原始数据?

这只是Racket的REPL输入处理的一个限制。如果你写一个独立的程序,它会工作得很好

以下是邮件列表中的一句话,解释了问题:

已知的限制。由普通'racket'实现的REPL没有 将REPL表达式的输入流与程序的 输入流


更多详情:

很高兴知道,谢谢,尽管这有点烦人。有解决方法吗,还是会被修复?
(定义(我的读取行)(let([contents(读取行)])(如果(string=?contents“”)(读取行)contents))
是我现在想使用的。