【发布时间】:2016-02-05 12:34:50
【问题描述】:
这个程序在 DrRacket 中运行良好:
(define (display-state input data)
input)
(define (update-state input data)
data )
(define (main input data)
(displayln (display-state input data))
(main (read-line (current-input-port) 'any) (update-state input data)))
(main "" data)
它是一个程序的骨架,它不断地从终端交互中读取数据并对用户的输入和数据状态进行处理。
但是,在终端上,使用
raco exe prog.rkt
它在第一次输入后终止。有谁知道为什么?它是 read-line 还是 current-input-port 的错误/功能?
【问题讨论】:
-
当我运行
racket prog.rkt或使用raco exe prog.rkt./prog时,该程序运行良好。 -
虽然我注意到它会打印出
#<eof>并且即使我按下 ctrl-D 也会继续要求更多输入。您可能应该处理这种情况,因为read-line返回字符串或 eof。 -
对我来说,它在我第一次回车后终止。
-
并将其打印的输出视为终端的输入
-
例如。如果我输入“blah”,它会完成,然后在我的系统上查找一个名为“blah”的命令