R5RS - 如何测试使用“读取”操作的程序
R5RS - How to test procedures that use `read` operation
是否可以测试使用 read
操作的程序?
例如
(define (foo prompt)
(display prompt)
(read))
我尝试使用 write
,但 read
似乎创建了一个块,因此 write
在我手动输入内容后仅 运行
当您在代码中调用内部 read
时,该调用不会从标准输入而是从您的文件本身读取,因为 reader 将输入文件转换为列表s-exps 将使用相同的读取功能。所以,是的,如果你重新定义它就可以使用它,否则结果更难预料。这是 read.scm
的示例:
(define (foo m)
(display m)
(read))
(display (foo "input:"))
200
(newline)
使用示例:
% mit-scheme --silent < read.scm
input:200
函数调用将读取值200
,它不会在表示代码的最终列表中返回。
要定义您自己的 read-keyboard
功能,您可以将其作为模型 this。
是否可以测试使用 read
操作的程序?
例如
(define (foo prompt)
(display prompt)
(read))
我尝试使用 write
,但 read
似乎创建了一个块,因此 write
在我手动输入内容后仅 运行
当您在代码中调用内部 read
时,该调用不会从标准输入而是从您的文件本身读取,因为 reader 将输入文件转换为列表s-exps 将使用相同的读取功能。所以,是的,如果你重新定义它就可以使用它,否则结果更难预料。这是 read.scm
的示例:
(define (foo m)
(display m)
(read))
(display (foo "input:"))
200
(newline)
使用示例:
% mit-scheme --silent < read.scm
input:200
函数调用将读取值200
,它不会在表示代码的最终列表中返回。
要定义您自己的 read-keyboard
功能,您可以将其作为模型 this。