编写便携式Scheme代码

时间:2015-05-23 13:19:02

标签: scheme lisp portability

我即将开始一个Scheme项目。所有的编程都非常简单,我正在尝试使我的程序可移植,这意味着可以在已安装Scheme的其他机器上轻松执行或安装。 我的程序应该处理文件格式的输入并将结果输出到屏幕,并将数据保存为文件。

我的问题是:

  1. 我的程序应该获得什么样的权限?
  2. 是否有编译器可以将我的Scheme程序编译成Unix或Windows系统的可执行文件?
  3. 提前致谢 注意:我在Ubuntu工作

1 个答案:

答案 0 :(得分:2)

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

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

您可以通过定位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)。