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

bac*_*opy 4 scheme executable compilation 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)
Run Code Online (Sandbox Code Playgroud)

Ósc*_*pez 5

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

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

让代码在iOS下运行可能会比较棘手,快速搜索返回了一个用于iOS 的Gambit REPL,尝试一下,但我认为不支持编译本机Objective-C代码,尽管Gambit 声称有"完全集成"支持C++和Objective-C编译器",你必须对它进行一些实验.

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