2009-07-12 13 views
2

J'ai essayé de le faire:Comment créer un module dans PLT Scheme?

#lang scheme 
(module duck scheme/base 
     (provide num-eggs quack) 
     (define num-eggs 2) 
     (define (quack n) 
     (unless (zero? n) 
      (printf "quack\n") 
      (quack (sub1 n))))) 

mais je reçois cette erreur:

module: illegal use (not at top-level) in: 
(module duck scheme/base (provide num-eggs quack) (define num-eggs 2) (define (quack n) (unless (zero? n) (printf "quack\n") (quack (sub1 n))))) 

quelle est la bonne façon?

Répondre

3

Vous devez supprimer la ligne (module duck scheme/base (et le paren de fermeture).

Lorsque vous démarrez votre code avec #lang scheme, il est efficace de mettre votre code dans un module qui utilise la langue scheme. Vous pouvez également utiliser #lang scheme/base si vous souhaitez utiliser la langue la plus petite à la place.

(Pour vraiment convaincu, faites ceci:

(parameterize ([read-accept-reader #t]) 
    (call-with-input-file "some file" read)) 

sur un certain fichier source qui utilise #lang et voir ce que vous obtenez.)

(Et BTW, le titre de votre question est mauvaise - - il devrait s'agir d'un "schéma PLT", car cela ne concerne pas d'autres implémentations.)