如何使用 MIT-Scheme 执行 .scm 脚本(在 REPL 之外)?
我想输入类似“scheme file.scm”的内容并让它解释该文件,然后带我返回 shell,而不是将其加载到 REPL 中。
编辑:我尝试过方案< test.scm 仍然使用 REPL,唯一的区别是方案在流结束时退出。
I want to type something like 'scheme file.scm' and have it interpret the file, and then take me back to my shell, rather than loading it in the REPL.
edit: I tried scheme < test.scm and it still uses the REPL, the only difference is that scheme exits when the stream ends.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
方案< file.scm
应该可以工作(只要您不指定--interactive
并且 stdin 不是终端,方案就会以非交互方式工作)。scheme < file.scm
should work (as long as you don't specify--interactive
and stdin is not a terminal, scheme works non-interactively).要使用 MIT Scheme 运行方案程序:
--quiet
选项确保程序的输出是唯一显示的内容(即,根据您的要求,您不会看到 REPL) 。警告:如果您的程序提示用户使用输入过程进行输入(例如
read
、read-char
、读取行
等)。 这是因为 shell 输入重定向 (<
)(请参阅:相关问题)。 不幸的是,当使用输入过程时,当前没有正确的方法从命令行执行 MIT Scheme 脚本。 最好的选择可能是 mit-scheme --quiet --load 'myscript' ,但您必须在脚本完成后手动退出 MIT Scheme。 相关邮件列表线程: [MIT-Scheme-devel ] 如何运行脚本并退出?编辑:由于您可能将
<
错误地输入为>
,导致覆盖您的源代码代码中,我建议将上述命令封装在 shell 脚本或 shell 函数中。 例如:然后您可以运行
runscheme program.scm
而不必担心您的源代码会被覆盖。 (特别感谢 Paul Rooney 提醒我注意这个潜在的错误)。参考
scheme --help
:此命令行选项似乎被错误地从 文档中的命令行选项列表,但我认为这是一个合法的命令行选项,因为
scheme --help
显示了它,并且因为--batch- mode
用于参考手册的其他部分(例如 此处)。To run a scheme program using MIT Scheme:
The
--quiet
option ensures that the output from your program is the only thing that is displayed (i.e. you won't see the REPL, as per your requirements).Caveat: This will not work if your program prompts the user for input using the input procedures (e.g.
read
,read-char
,read-line
, etc.). This is because of the shell input redirection (<
) (See: relevant question). Unfortunately, there is currently no proper way of executing an MIT Scheme script from the command line when input procedures are used. The best option is probablymit-scheme --quiet --load 'myscript'
, but you'd have to manually exit MIT Scheme when the script finishes. Relevant mailing list thread: [MIT-Scheme-devel] How to run a script and exit?EDIT: Due to the possibility that you may mistype
<
as>
, resulting in the overwrite of your source code, I would suggest encapsulating the above command within a shell script or a shell function. For example:Then you can run
runscheme program.scm
without fear that your source code will be overwritten. (Special thanks to Paul Rooney for bringing this potential mistake to my attention).References
scheme --help
:This command line option seems to have been mistakenly ommitted from the list of command line options in the documentation, but I think this is a legimate command line option because
scheme --help
shows it, and because--batch-mode
is used in other parts of the reference manual (e.g. here).我认为你想要的是SCM。 您可以像这样执行 .scm 脚本:
$ scm -f foo.scm arg1 arg2 arg3
请参阅 http://people.csail.mit.edu/jaffer/scm_3.html#SEC28 了解更多详细信息。
SCM 主页:http://people.csail.mit.edu/jaffer/SCM
I think what you want is SCM. You can execute a .scm script like this:
$ scm -f foo.scm arg1 arg2 arg3
See http://people.csail.mit.edu/jaffer/scm_3.html#SEC28 for more details.
The SCM homepage: http://people.csail.mit.edu/jaffer/SCM
检查了
chez --help
,然后我发现了这个(假设我正在使用 chez 方案):另外,
--verbose
非常有用:checked
chez --help
, and then I found this(let's say that I'm using chez scheme):Also,
--verbose
is very useful: