我试过这样做:
#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)))))
正确的方法是什么?
答案 0 :(得分:3)
您应该删除(module duck scheme/base
行(和结束语)。
当您使用#lang scheme
启动代码时,它会将您的代码有效地放入使用scheme
语言的模块中。如果您想要较小的语言,也可以使用#lang scheme/base
。
(要真正相信,请这样做:
(parameterize ([read-accept-reader #t])
(call-with-input-file "some file" read))
使用#lang
的某个源文件,看看你得到了什么。)
(顺便说一下,你问题的标题很糟糕 - 它应该是“PLT Scheme”,因为这与其他实现无关。)