2009-07-12 29 views
2

我試着這樣做:如何在PLT計劃中製作模塊?

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

但我得到這個錯誤:

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

什麼是正確的方法是什麼?

回答

3

您應該刪除(module duck scheme/base行(和關閉的表格)。

當您使用#lang scheme開始代碼時,它實際上是將代碼放入使用scheme語言的模塊中。如果您想要較小的語言,您也可以使用#lang scheme/base

(真正得到確信,這樣做:

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

在使用#lang一些源文件,看看你會得到什麼。)

(和BTW,你的問題的標題是壞的 - - 它應該是「PLT計劃」,因爲這與其他實施無關)。