Import r5rs中未定义的ADT

Import r5rs中未定义的ADT,import,module,scheme,racket,r5rs,Import,Module,Scheme,Racket,R5rs,我在用r5rs写一个ADT,我在用DrRacket。我将lang r5rs放在文件的顶部,并从DrRacket选择了destine Language from Source,但它告诉我我的ADT是未定义的。我正在使用DrRacket版本6.0。这是我第一次这样,我不明白我做错了什么 我的ADT 当我尝试创建我的ADT实例时,我得到以下输出:我的ADT:undefined;无法在标识符定义之前引用标识符 当我从顶部删除langr5rs并选择r5rs作为DrRacket中的语言时,它似乎起到了作用。

我在用r5rs写一个ADT,我在用DrRacket。我将lang r5rs放在文件的顶部,并从DrRacket选择了destine Language from Source,但它告诉我我的ADT是未定义的。我正在使用DrRacket版本6.0。这是我第一次这样,我不明白我做错了什么

我的ADT

当我尝试创建我的ADT实例时,我得到以下输出:我的ADT:undefined;无法在标识符定义之前引用标识符

当我从顶部删除langr5rs并选择r5rs作为DrRacket中的语言时,它似乎起到了作用。但是,我的queue.rkt文件的顶部仍然有lang r5r,并从源代码确定语言。当我远程运行lang R5R并在该文件中选择R5R作为语言时,我在my ADT文件中得到以下内容:

错误

我的ADT:未定义;无法在标识符定义之前引用标识符

通常表示函数my ADT在定义之前已被使用。 也就是说,必须将所有定义放在文件顶部,并将表达式放在下面


上面的示例没有使用my ADT,因此如果出现此错误,问题可能在queue.rkt中。您能否运行queue.rkt而不出错?

是的,它运行正常。但是当我从queue.rkt文件的顶部删除lang r5rs时,它给了我第二个错误。你能发布两个实际的文件吗。
#lang r5rs
(#%require "queue.rkt") ;A required file
(#%provide (all-defined))

(define (my-ADT)
    (let ((val1 '())
          (val2 '()))

    (define (foo) ...)
    (define (bar) ...)

    (define (dispatch msg)
        (case msg
            ((foo) foo)
            ((bar) bar)
            (else "Unknown message")))

    dispatch))
default-load-handler: expected a `module' declaration
found: something else
in: #<path:/Users/path/path/path/queue.rkt>