Import r5rs中未定义的ADT
我在用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在定义之前已被使用。 也就是说,必须将所有定义放在文件顶部,并将表达式放在下面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中的语言时,它似乎起到了作用。
上面的示例没有使用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>