Question

Est-ce un bug dans le schéma de poulet?

#;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)     <--
Était-ce utile?

La solution 2

La syntaxe point (.) pour les fonctions variadique ne sont pas disponibles dans les modules; il est à l'intérieur du module scheme. Lorsque vous créez un module personnalisé, vous devez importer explicitement le module scheme aux fonctions variadique réactiver.

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

Autres conseils

Votre syntaxe du module est manquant la liste des symboles à exporter à partir du module. Essayez ceci:

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

Notez que le (foo) après avoir déclaré le nom du module.

Je vais ajouter que la liste de diffusion et canal irc (#chicken sur freenode) sont très actifs. Si vous avez des questions au sujet du poulet, ils sont les meilleurs endroits pour obtenir des réponses.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top