如何在 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) <--
Is this a bug in 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) <--
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您的模块语法缺少要从模块导出的符号列表。试试这个:
注意声明模块名称后的 (foo)。
我将添加 邮件列表 和 irc 频道(#chicken on freenode)非常活跃。如果您对鸡肉有疑问,他们是获得解答的最佳场所。
Your module syntax is missing the list of symbols to export from the module. Try this:
Notice the (foo) after declaring the module name.
I'll add that the mailing list and irc channel (#chicken on freenode) are very active. If you have questions about chicken they are the best places to get them answered.
可变参数函数的点 (
.
) 语法不可跨模块使用;它位于scheme
模块内。创建自定义模块时,必须显式导入scheme
模块才能重新启用可变参数函数。The dot (
.
) syntax for variadic functions is not available across modules; it's inside thescheme
module. When you create a custom module, you have to explicitly import thescheme
module to reenable variadic functions.