为什么函数compose是在解释器csi中而不是在编译器csc中定义的?我知道我可以很容易地自己定义它,但我只是想知道为什么会有这样的区别。
发布于 2015-08-29 12:19:14
compose过程来自单元data-structures (参见手册或API文档)。您可以通过键入(use data-structures)加载它。
至于为什么它在csi中可用,而在默认情况下却不能在csc中使用,这是一个复杂的实现细节;为了提供解释器环境,csi解释器只需自己加载几个模块即可。由于它的实现方式,由csi加载的所有东西也在顶层可用。在小鸡5中,这种情况已经有了很大的改善,解释器从一个干净的顶层环境开始。
因此,在实践中,这意味着您应该始终显式地(use)程序所需的所有模块,以确保它在编译模式和解释模式下工作。您也可以将整个程序封装在模块中,而不是将程序放在顶级环境中。模块总是有一个完全干净的环境,所以编译它和解释它时没有区别。
https://stackoverflow.com/questions/32284885
复制相似问题