Gambit Scheme 代码生成器
可以通过 REPL 命令访问 Gambit Scheme 代码生成器:
Main> :set cg gambit
或者,您可以通过 IDRIS2_CG 环境变量进行设置:
$ export IDRIS2_CG=gambit
要使用此生成器运行 Idris 程序,您需要安装 Gambit Scheme 。 Gambit Scheme 是免费软件,可通过大多数包管理器获得。
您可以在 REPL 中将类型为 IO () 的表达式 expr 编译为可执行文件,如下所示:
Main> :c execname expr
...其中 execname 是可执行文件的名称。这将生成以下内容:
程序的可执行二进制文件为
build/exec/execname。一个 Gambit Scheme 源文件
build/exec/execname.scm,并从中生成二进制文件。
你也可以直接执行表达式:
Main> :exec expr
同样, expr 必须具有 IO () 类型。这将生成一个临时 Scheme 文件,并在其上执行 Gambit 解释器。
Gambit 指令
--directive extraRuntime=<path>将来自
<path>的 Scheme 源代码直接嵌入到生成的输出中。可以多次指定,在这种情况下,所有给定的文件都将按指定的顺序包含。; extensions.scm (define (my-mul a b) (* a b))
-- Main.idr %foreign "scheme:my-mul" myMul : Int -> Int -> Int
$ idris2 --codegen gambit --directive extraRuntime=/path/to/extensions.scm -o main Main.idr
--directive C编译为 C。使用此指令,gambit 将生成一个 .c 文件而不是可执行文件。
$ idris2 --codegen gambit --directive C -o main.c Main.idr
Gambit 环境变量配置
GAMBIT_GSC_BACKENDGAMBIT_GSC_BACKEND变量控制在编译期间 Gambit 将使用哪个 C 编译器。例如。使用 clang :$ export GAMBIT_GSC_BACKEND=clang
Gambit 4.9.4 或更新版本支持
-cc选项,它配置 Gambit 将用于构建二进制文件的编译器后端。