csi和csc之间的差异(Chicken Scheme)

时间:2015-08-29 10:09:58

标签: scheme chicken-scheme

为什么函数compose在解释器csi中而不是在编译器csc中定义?我知道我可以很容易地自己定义它,但我只是想知道为什么会有这样的差异。

1 个答案:

答案 0 :(得分:5)

compose程序来自单位data-structures(请参阅the manualAPI docs)。您可以输入(use data-structures)

来加载它

至于为什么它在csi中可用而在csc中默认情况下是一个毛茸茸的实现细节; csi解释器只需要自己加载一些模块以提供解释器环境。由于它的实现方式,csi加载的所有内容也可以在顶层获得。在CHICKEN 5中,这种情况已经有了很大的改进,解释器从一个干净的顶级环境开始。

所以这在实践中意味着你应该始终明确(use)程序所需的所有模块,以确保它在编译模式和解释模式下工作。您也可以将整个程序包装在module内,而不是将程序放在顶级环境中。模块总是有一个完全干净的环境,因此在编译它时与解释它时没有区别。