Racket(Scheme)错误:应为引号后的符号名称,但找到了一个部分

Racket(Scheme)错误:应为引号后的符号名称,但找到了一个部分,scheme,racket,the-little-schemer,Scheme,Racket,The Little Schemer,我在Dr.Racket Verion 5.3.6中运行了以下代码(小阴谋家): (define rember (lambda (a lat) (cond ((null? lat) (quote ())) (else (cond ((eq? (car lat) a) (cdr lat)) (else (cons (car lat) (rember a (cdr lat))))))))) 它抛出错误:quote:应该是引号后面的符号名称,但在(quote())部

我在Dr.Racket Verion 5.3.6中运行了以下代码(小阴谋家):

(define rember
(lambda (a lat)
(cond
  ((null? lat) (quote ()))
  (else 
   (cond
     ((eq? (car lat) a) (cdr lat))
     (else (cons (car lat) (rember a (cdr lat)))))))))

它抛出错误:
quote:应该是引号后面的符号名称,但在
(quote())
部分中找到了一个部分。我在这里做错了什么?

该错误表示您选择以“初学者”语言运行程序。在这种语言中,
quote
格式受到限制

如果您将语言更改为“使用列表缩写的初学者”,一切都会顺利进行

让我们在“初学者”语言的文档中查找
quote

您将看到语法描述为
(语法名称)
。 如果您将其与“具有列表缩写的初学者”文档进行比较,您会发现
现在允许引用列表

开始学习的学生语言受到限制的原因是,HtDP的开头只使用了
(引号名称)
,因此,如果遵循HtDP的学生写
”(foo bar)
,那么这不是故意的。因此,一个错误(说明需要一个名称)是有帮助的-因此需要限制
quote
表单