我在 Racket 中编写了一个程序,现在我必须将我的代码更改为 R5RS。但我立即得到错误。
我在 Racket 中有以下代码:
#lang racket
(provide a-function)
(define (a-function)
; Do something
#t)
(define a-variable #t)
然后我将其更改为 R5RS :
#lang r5rs
(#%provide a-function)
(define (a-function)
; Do something
#t)
(define a-variable #t)
现在的问题是,当我运行这个简单的代码并尝试调用过程“a-function”时,它告诉我a-function: undefined;
cannot reference an identifier before its definition
我注意到这个问题只与程序有关,变量“a-variable”是已知的,但没有程序是已知的......
编辑:我试图将一个过程伪装成一个变量,看看他是否知道那个过程,但是我得到了同样的错误。
#lang r5rs
(#%provide a-function)
(define a-function (lambda (x y) (+ x y)))
我进行了很多搜索,我认为问题一定是我仍在将我的 Racket 代码合并到 R5RS,因此某些文件仍在 Racket 中,其他文件在 R5RS 中,并且由于我不明白的原因造成了麻烦(应该没问题...)
编辑:我尽可能简单地重建了问题:
R5RS 文件“a.rkt”:
#lang r5rs
(#%provide makePosition)
(define (makePosition x y)
(cons x y))
球拍文件:
#lang racket
(require "a.rkt")
(makePosition 20 10)
运行 Racket 文件时,会出现错误“未定义的标识符 ...”。
根据我的一位老师的说法,这是一个球拍错误。