如何在编译环境中使用鸡蛋?

Mig*_*uel 4 scheme compilation libraries chicken-scheme

这是我之前的问题的后续跟进.不幸的是,似乎鸡计划默认情况下不支持复杂数字,而是提供numbers可以安装的鸡蛋.

我已经安装了这个鸡蛋,chicken-install numbers我可以在解释的环境中加载它.我可以通过电话来做到这一点use; 在REPL中手动操作,或者将我的.scm文件作为脚本运行csi.

例如,这个脚本完美地运行:

(use numbers)

(begin
  (display 3+3i)
  (newline)
)
Run Code Online (Sandbox Code Playgroud)

运行时:

csi -s main.scm
Run Code Online (Sandbox Code Playgroud)

但是,当我编译这个完全相同的片段csc(即使没有任何addtional标志),我得到相同的运行时错误,如果我没有加载它(例如一个未绑定的变量).似乎在编译环境中use没有'切芥末.

其他两件事情需要注意的是,每文档,我想如其他进口功能require-extension,require-library等等,但没有作出区别.另一个是,如果我将模块的名称更改为其他内容numbers,比如说numberss它无法编译,抱怨它无法加载扩展,那么显然它至少会检测到numbers库已安装.

有谁能解释一下,最好通过一个简短的工作实例来说明如何在编译环境中使用鸡蛋?提前致谢!:)

Mig*_*uel 5

根据Peter Bex在邮件列表中提供的有用信息,大多数鸡蛋都可以开箱即用,你只需要use它们.

但是,某些鸡蛋会为基本读者提供扩展,编译器需要被告知它们.你可以用-X旗帜做到这一点.正如文档所说,numbers是其中一个包.

使用以下代码编译您的代码段:

csc -X numbers-syntax main.scm
Run Code Online (Sandbox Code Playgroud)

工作得很好.

我希望这有帮助!:)