这是Chicken Scheme中的错误吗?
#;1> (define (foo x . y) x)
#;2> (foo 1 2 3)
1
#;3> (module bar (import scheme chicken) (define (foo x . y) x))
Error: invalid syntax in macro form: (foo x . y)
Call history:
<syntax> (module bar (import scheme chicken) (define (foo x . y) x))
<syntax> (##core#module bar (import scheme chicken) (define (foo x . y) x))
<syntax> (define (foo x . y) x)
<syntax> (foo x . y) <--
答案 0 :(得分:0)
您的模块语法缺少要从模块导出的符号列表。试试这个:
#1;> (module bar (foo) (import scheme chicken) (define (foo x . y) x))
#2;> (import bar)
#3;> (foo 1 2 3)
1
在声明模块名称后注意(foo)。
我将补充说mailing list和irc频道(freenode上的#chicken)非常活跃。如果您对鸡肉有疑问,他们是最好的回答。
答案 1 :(得分:0)
可变参数函数的点(.
)语法在模块之间不可用;它在scheme
模块中。创建自定义模块时,必须显式导入scheme
模块以重新启用可变参数函数。
#1;> (module bar (foo) (import scheme chicken) (define (foo x . y) x))
#2;> (import bar)
#3;> (foo 1 2 3)
1