如何在scheme中编译可执行文件?

时间:2013-01-17 05:50:29

标签: compilation scheme executable racket

我想为以下代码制作一个可执行文件。 这是Dr.racket编写的方案。 怎么做? 最好是它可以是独立的,如果我可以在iOS和Windows上打开它。 非常感谢你的时间!

#lang racket

(require racket/gui/base)
(require compiler/embed)


; Make a frame by instantiating the frame% class
(define frame (new frame% [label "GUI"]
                   [width 200]
                   [height 200]))


; Make a static text message in the frame
(define msg (new message% [parent frame]
                          [label "This box is empty"]))


; Show the frame by calling its show method
(send frame show #t)

1 个答案:

答案 0 :(得分:5)

正如@dyoo指出的那样,在Racket中,您可以从菜单中创建一个可执行文件,并(根据所选/可用选项)打包所需的库;阅读instructions。您还可以使用命令行tools为其他平台创建可执行文件。

对于更通用和可移植的解决方案,请考虑首先将代码编译为C,然后从C编译为本机可执行文件;查看raco工具(第9.3节),或查看为轻松编译为C而设计的Scheme实现,例如Chicken SchemeGambit Scheme

让代码在iOS下运行可能会比较棘手,快速搜索为iOS返回Gambit REPL,尝试一下,但我认为不支持编译本机Objective-C代码,尽管Gambit claims要获得“对C ++和Objective-C编译器的完全集成支持”,你必须对它进行一些实验。

最后,请注意特定于Racket的GUI代码(如问题中的那个)几乎肯定会在不同的Scheme实现/平台上不可移植......