簡體   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