Scheme drracket v6.8无绑定

Scheme drracket v6.8无绑定,scheme,racket,Scheme,Racket,我的Dr.Racket已更新到v6.8。 AFAIK nil是一个语言构造关键字,不应抱怨它是一个未绑定的标识符 #lang racket (define (enumerate-interval low high) (if (> low high) nil (cons low (enumerate-interval (+ 1 low) high)))) 运行定义块时的确切错误消息为: nil: unbound identifier in module in:

我的Dr.Racket已更新到v6.8。 AFAIK nil是一个语言构造关键字,不应抱怨它是一个未绑定的标识符

#lang racket

(define (enumerate-interval low high)
  (if (> low high)
      nil
      (cons low (enumerate-interval (+ 1 low) high))))
运行定义块时的确切错误消息为:

nil: unbound identifier in module in: nil

这与v6.8有什么不同吗?

自1991年R4RS发布以来,nil一直不是标准的一部分。请看第页和第38页,其中有语言更改

lang racket最初是一种R5RS,但今天它已经演变成一种完全不同的方言。因此,它的名字从Scheme改为Racket。您应该使用空列表literal
”()
或其中一个绑定,并在其位置上使用
empty
不在
racket/base
中,因此您需要要求
racket/list
或使用
#lang racket
以获得更大的绑定集来使用它

如果您确实想使用
nil
作为表示空列表的全局绑定,您可以自己定义它:

(define nil '())

然而,一个普通人可能会错误地认为,自1991年R4RS发布以来,错误值
#f

没有成为标准的一部分。请看第页和第38页,其中有语言更改

lang racket最初是一种R5RS,但今天它已经演变成一种完全不同的方言。因此,它的名字从Scheme改为Racket。您应该使用空列表literal
”()
或其中一个绑定,并在其位置上使用
empty
不在
racket/base
中,因此您需要要求
racket/list
或使用
#lang racket
以获得更大的绑定集来使用它

如果您确实想使用
nil
作为表示空列表的全局绑定,您可以自己定义它:

(define nil '())

然而,一个普通人可能会错误地认为,使用假值
#f

谢谢你的详细回答,我用“()”成功地解决了这个问题。谢谢。谢谢你详细的回答,我用“()”成功了。谢谢