csi 和 csc(Chicken Scheme)的区别
Differences between csi and csc (Chicken Scheme)
为什么函数 compose
定义在解释器 csi
而不是编译器 csc
中?我知道我可以很容易地自己定义它,但我只是想知道为什么会有这样的差异。
compose
程序来自 data-structures
单元(参见 the manual or API docs)。您可以通过键入 (use data-structures)
.
来加载它
至于为什么默认情况下它在 csi
中可用而不在 csc
中可用,这是一个有点毛茸茸的实现细节; csi
解释器只需要自己加载一些模块来提供解释器环境。由于它的实现方式,csi
加载的所有内容在顶层也可用。在 CHICKEN 5 中,这种情况有了很大改善,解释器从一个干净的顶层环境开始。
所以这在实践中意味着您应该始终显式 (use)
您的程序需要的所有模块,以确保它在编译模式和解释模式下工作。您也可以将整个程序包装在 module 中,而不是将您的程序放在顶层环境中。模块总是有一个完全干净的环境,所以编译和解释时没有区别。
为什么函数 compose
定义在解释器 csi
而不是编译器 csc
中?我知道我可以很容易地自己定义它,但我只是想知道为什么会有这样的差异。
compose
程序来自 data-structures
单元(参见 the manual or API docs)。您可以通过键入 (use data-structures)
.
至于为什么默认情况下它在 csi
中可用而不在 csc
中可用,这是一个有点毛茸茸的实现细节; csi
解释器只需要自己加载一些模块来提供解释器环境。由于它的实现方式,csi
加载的所有内容在顶层也可用。在 CHICKEN 5 中,这种情况有了很大改善,解释器从一个干净的顶层环境开始。
所以这在实践中意味着您应该始终显式 (use)
您的程序需要的所有模块,以确保它在编译模式和解释模式下工作。您也可以将整个程序包装在 module 中,而不是将您的程序放在顶层环境中。模块总是有一个完全干净的环境,所以编译和解释时没有区别。