【问题标题】:How do I make a module in PLT Scheme?如何在 PLT Scheme 中制作模块?
【发布时间】:2010-11-10 03:06:50
【问题描述】:

我试过这样做:

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

正确的方法是什么?

【问题讨论】:

    标签: functional-programming lisp scheme racket


    【解决方案1】:

    您应该删除 (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”,因为这与其他实现无关。)

    【讨论】:

      猜你喜欢
      • 2010-11-11
      • 2011-01-11
      • 1970-01-01
      • 2010-09-11
      • 2012-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多