我有一个名为test.scm的文件,如下所示:
(display 5)
当我这样的时候
cat test.scm | scheme
或者像这样
scheme < test.scm
或者像这样
cat test.scm | scheme > output.txt
我得到了
MIT/GNU Scheme running under GNU/Linux
Type `^C' (control-C) followed by `H' to obtain information about interrupts.
Copyright (C) 2011 Massachusetts Institute of Technology
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Image saved on Sunday February 7, 2016 at 10:35:34 AM
Release 9.1.1 || Microcode 15.3 || Runtime 15.7 || SF 4.41
LIAR/x86-64 4.118 || Edwin 3.116
1 ]=> 5
;Unspecified return value
1 ]=>
End of input stream reached.
Moriturus te saluto.
我需要做些什么才能获得以下内容?
5
答案 0 :(得分:1)
棘手的问题。我尝试了一点,但我有问题让它像我目前使用的其他Scheme实现一样。如果您对详细输出没问题,可以这样做:
scheme --load "file.scm"
现在。我通常使用plt-r5rs
和plt-r6rs
来运行内容和raco exe
来为我的机器生成可执行文件:
plt-r5rs r5rs-program.scm # interpreted r5rs
plt-r6rs r6rs-program.scm # interpreted r6rs
raco exe any-scheme-program.scm
./any-scheme-program # faster executable
我有时也使用ikarus,因为它有时比编译的球拍更快:
ikarus --r6rs-script r6rs-program.scm # jit compiled r6rs
在您的问题中,您正在尝试使用shell管道和重定向。这些将stdio / stdout / stderr从文件或管道重定向到另一个程序,不计划要运行的源代码。这适用于球拍和ikarus:
cat file1 file2 | ikarus --r6rs-script r6rs-echo.scm | wc -l
plt-r6rs r6rs-echo.scm < file | wc -l
plt-r5rs wcl.scm < file > file-count.txt
请注意,还有很多其他scheme implementations符合R5RS,R6RS甚至R7RS的要求。自从我使用mit-scheme以来已经有一段时间了,在我再次开始使用其他许多选项之前,它肯定会很好。