编译为可执行文件
备注
Idris 的文档已在知识共享 CC0 许可下发布。因此,在法律允许的范围内,Idris 社区 已经放弃了 Idris 文档的所有版权和相关或邻近的权利。
关于CC0的更多信息,可以在网上找到:http://creativecommons.org/publicdomain/zero/1.0/
Idris 2(语言)被设计为不依赖于任何特定的代码生成器。不过,由于编写程序的重点是能够运行它,所以知道如何运行是很重要的,默认情况下,Idris通过 Chez Scheme 编译为可执行文件。
你可以在 REPL 中按如下方式编译到可执行文件:
Main> :c execname expr
…其中 execname
是要生成的可执行文件的名称, expr
是将被执行的 Idris 表达式。 expr
必须拥有 IO ()
的类型。这将产生一个可执行文件 execname
,在相对于当前工作目录的 build/exec
目录下。
你也可以直接执行表达式:
Main> :exec expr
同样, expr
也必须要有类型 IO ()
。
最后,你可以通过添加 -o <output file>
选项从命令行编译为可执行文件:
$ idris2 hello.idr -o hello
将编译表达式 Main.main
,在 build/exec
目录下生成一个可执行的 hello
(根据代码生成器的不同,可能会有一个文件扩展名)。
默认情况下,Idris 2 是一个完整的程序编译器 - 也就是说,它找到所有必要的函数定义,并在你构建可执行文件时才编译它们。这提供了大量的优化机会,但对于重新构建来说可能会很慢。然而,如果后端支持的话,你可以 增量 构建模块和可执行文件:
如果后端支持,你可以通过设置 profile
标志来生成配置数据,或者用 --profile
启动 Idris,或者在 REPL 运行 :set profile
。生成的配置数据将取决于你所使用的后端。目前, Chez 和 Racket 后端支持生成配置数据。
Idris 2 中提供了五个代码生成器,并且有一个系统可以为各种目标语言插入新的代码生成器。默认是通过 Chez Scheme 编译,还有一个选择是通过 Racket 或 Gambit 编译。你可以在REPL中用 :set codegen 命令设置代码生成器,或者通过 IDRIS2_CG 环境变量进行设置。
还有一些其它的代码生成器,它们不是Idris 2 主资源库的一部分,你可以在 Idris 2 维基上找到:
目前正在进行的工作是支持从 idris2 代码生成其他语言的库。