如何使用 MIT-Scheme 执行 .scm 脚本(在 REPL 之外)?

发布于 2024-07-21 23:43:05 字数 133 浏览 3 评论 0原文

我想输入类似“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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

傲影 2024-07-28 23:43:05

方案< 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).

愁以何悠 2024-07-28 23:43:05

要使用 MIT Scheme 运行方案程序:

scheme --quiet < program.scm

--quiet 选项确保程序的输出是唯一显示的内容(即,根据您的要求,您不会看到 REPL) 。

警告:如果您的程序提示用户使用输入过程进行输入(例如 readread-char读取行等)。 这是因为 shell 输入重定向 (<)(请参阅:相关问题)。 不幸的是,当使用输入过程时,当前没有正确的方法从命令行执行 MIT Scheme 脚本。 最好的选择可能是 mit-scheme --quiet --load 'myscript' ,但您必须在脚本完成后手动退出 MIT Scheme。 相关邮件列表线程: [MIT-Scheme-devel ] 如何运行脚本并退出?

编辑:由于您可能将 < 错误地输入为 >,导致覆盖您的源代码代码中,我建议将上述命令封装在 shell 脚本或 shell 函数中。 例如:

runscheme () {
    scheme --quiet < "$1"
}

然后您可以运行runscheme program.scm而不必担心您的源代码会被覆盖。 (特别感谢 Paul Rooney 提醒我注意这个潜在的错误)。

参考

scheme --help

--批处理模式,--quiet,--silent

抑制版本和版权的启动报告,以及
告别辞。

此命令行选项似乎被错误地从 文档中的命令行选项列表,但我认为这是一个合法的命令行选项,因为 scheme --help 显示了它,并且因为 --batch- mode 用于参考手册的其他部分(例如 此处)。

To run a scheme program using MIT Scheme:

scheme --quiet < program.scm

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 probably mit-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:

runscheme () {
    scheme --quiet < "$1"
}

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:

--batch-mode, --quiet, --silent

Suppresses the startup report of versions and copyrights, and the
valediction.

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).

〃温暖了心ぐ 2024-07-28 23:43:05

我认为你想要的是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

檐上三寸雪 2024-07-28 23:43:05

检查了 chez --help,然后我发现了这个(假设我正在使用 chez 方案):

chez --script ./temp.scm

另外,--verbose 非常有用:

chez --verbose --script ./temp.scm

checked chez --help, and then I found this(let's say that I'm using chez scheme):

chez --script ./temp.scm

Also, --verbose is very useful:

chez --verbose --script ./temp.scm
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文