繁体   English   中英

您如何在Chicken Scheme模块中定义可变函数?

[英]How do you define a variadic function in a Chicken Scheme module?

这是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)     <--

您的模块语法缺少要从模块导出的符号列表。 尝试这个:

#1;> (module bar (foo) (import scheme chicken) (define (foo x . y) x))
#2;> (import bar)
#3;> (foo 1 2 3)
1

声明模块名称后,请注意(foo)。

我将添加邮件列表和irc频道(在freenode上的#chicken)非常活跃。 如果您对鸡肉有疑问,那么它们是回答它们的最佳场所。

可变参数函数的点( . )语法在模块之间不可用; 它在scheme模块中。 创建自定义模块时,必须显式导入scheme模块以重新启用可变参数功能。

#1;> (module bar (foo) (import scheme chicken) (define (foo x . y) x))
#2;> (import bar)
#3;> (foo 1 2 3)
1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM