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

时间:2012-11-23 17:46:32

标签: compilation scheme libraries chicken-scheme

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

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

例如,此脚本完美运行:

(use numbers)

(begin
  (display 3+3i)
  (newline)
)

运行时:

csi -s main.scm

但是当我用csc编译这个完全相同的片段时(即使没有任何附加标志),我得到了相同的运行时错误,如果我没有加载它(例如一个未绑定的变量)。好像在编译环境中use没有削减芥末。

另外需要注意的是,根据文档,我尝试了其他导入功能,例如require-extensionrequire-library等,但没有任何区别。另一个是,如果我将模块的名称更改为numbers以外的其他名称,比如numberss,则无法编译,抱怨它无法加载扩展名,所以显然它至少是检测到numbers库已安装。

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

1 个答案:

答案 0 :(得分:5)

根据Peter Bex在mailing list提供的有用信息,大多数鸡蛋都可以开箱即用,您只需要use

但是,某些鸡蛋会为基本读者提供扩展,编译器需要被告知它们。您可以使用-X标志执行此操作。正如documentation所说,numbers是其中一个包。

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

csc -X numbers-syntax main.scm

工作得很好。

我希望这有帮助! :)