编写便携式Scheme代码

我即将开始一个Scheme项目.所有的编程都非常简单,我正在尝试使我的程序可移植,这意味着可以在已安装Scheme的其他机器上轻松执行或安装.

我的程序应该处理文件格式的输入并将结果输出到屏幕,并将数据保存为文件.

我的问题是:

>我的程序应该获得什么样的权限?
>是否有编译器可以将我的Scheme程序编译成Unix或Windows系统的可执行文件?

提前致谢
注意:我在Ubuntu工作

最佳答案 编写符合标准的Scheme会严格限制您的工作. R5RS标准非常小,不包括错误处理等基本内容,甚至不包括运行代码的编译器/解释器. R6RS标准更为广泛,但未得到广泛实施.因此,编写一个可以在用户机器上安装的任何Scheme解释器或编译器上运行的Scheme程序是很困难的.

然而,这并不重要,因为Scheme并未广泛安装.有可能你的最终用户没有安装任何Scheme解释器,除了可能是以libguile为幌子,但那是一个C库.

您可以通过定位Scheme的特定实现来实现平台可移植性,无论如何您都必须这样做,因为您需要依赖某些实现的Scheme标准扩展来完成任何工作.

Chicken Scheme有一个生成小型可执行文件的编译器,它声称可以在Windows和Unix上运行.不过,我只在Linux上使用它.

商业Chez Scheme还有一个可以在Windows和Linux上生成可执行文件的编译器,但我从未在任何平台上使用任何版本的Chez Scheme.

Racket可以在Windows,Linux和MacOS上生成可执行文件.但是,语言与Scheme大不相同.例如,列表在Racket中是不可变的. Racket有一个大型库,包括网络和GUI之类的东西,所有这些都可以在操作系统之间完全移植.编译器生成大的可执行文件.

SISC在JVM上运行,使其可以移植到运行Java的任何东西上.但是,它是一个解释器,而不是编译器.

以上所有都具有对C的外部函数干涉(或在SISC的情况下对Java).

点赞