2009-07-12 10 views
2

Ich habe versucht, dies zu tun:Wie mache ich ein Modul in 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))))) 

Aber ich bekomme diese Fehlermeldung:

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

was ist der richtige Weg?

Antwort

3

Sie sollten die (module duck scheme/base Linie (und den schließenden) entfernen.

Wenn Sie Ihren Code mit #lang scheme starten, wird Ihr Code effektiv in ein Modul eingefügt, das die scheme Sprache verwendet. Sie können auch #lang scheme/base verwenden, wenn Sie stattdessen die kleinere Sprache möchten.

(wirklich überzeugt zu bekommen, dies zu tun:

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

über einige Quelldatei, die #lang und sehen verwendet, was man bekommt.)

(Und BTW, der Titel Ihrer Frage ist schlecht - - Es sollte "PLT Scheme" sein, da dies für andere Implementierungen nicht relevant ist.)