假设我有一个库 foofoo.scm
像这样:
(module foo (bar)
(import scheme)
(define (bar arg)
(+ 5 arg)))
我有一个程序program.scm
:
(use foo)
(display (bar 2))
现在,我使用 编译 foo 并生成导入库csc -J -library foo.scm
,然后使用csc program.scm
. 运行程序按预期显示“7”,一切正常。但是,我想在解释器(csi)中以交互方式加载程序,但现在由于某种原因,每次调用 foo 中的函数都必须加上前缀foo#
,即在解释器中(foo#bar 2)
有效,但(bar 2)
即使它在使用时也不起作用一个源文件。
为什么是这样?这不仅有点烦人,我还担心我可能对模块系统在 Chicken 中的工作方式有误解,所以任何澄清都将不胜感激。