0

これはChickenSchemeのバグですか?

#;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)     <--
4

2 に答える 2

0

モジュール構文に、モジュールからエクスポートするシンボルのリストがありません。これを試して:

#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)が非常にアクティブであることを追加します。鶏肉について質問がある場合は、答えを得るのに最適な場所です。

于 2011-10-19T15:48:05.503 に答える
0

可変個引数関数のドット(.)構文は、モジュール間では使用できません。モジュール内にありschemeます。カスタムモジュールを作成するときは、モジュールを明示的にインポートしschemeて、可変個引数関数を再度有効にする必要があります。

#1;> (module bar (foo) (import scheme chicken) (define (foo x . y) x))
#2;> (import bar)
#3;> (foo 1 2 3)
1
于 2011-10-19T18:27:46.603 に答える