Mat*_*teo 3 scheme chicken-scheme
为什么函数compose在解释器中csi而不是在编译器中定义csc?我知道我可以很容易地自己定义它,但我只是想知道为什么会有这样的差异.
该compose过程来自该单元data-structures(请参阅手册或API文档).您可以通过键入来加载它(use data-structures).
至于为什么它可用csi而不是csc默认是一个毛茸茸的实现细节; 该csi解释器只是需要加载几个模块本身,以便提供一个解释器环境.由于它的实现方式,所有加载的东西csi也可以在顶层获得.在CHICKEN 5中,这种情况已经有了相当大的改进,并且解释器从一个干净的顶级环境开始.
所以这在实践中意味着你应该始终明确(use)所有程序所需的模块,以确保它在编译模式和解释模式下工作.您也可以将整个程序包装在模块中,而不是将程序放在顶层环境中.模块总是有一个完全干净的环境,因此在编译它时与解释它时没有区别.