为什么在DrRacket中工作,但不在控制台的球拍中工作

问题描述:

(define pick 
    (lambda (num lat) 
     (cond ((null? lat) (quote())) 
      ((= (sub1 num) 0) (car lat)) 
      (else 
        (pick (sub1 num) (cdr lat)))))) 
(define brees (quote (a b c d e touchdown g h i))) 
(pick 6 brees) 

DrRacket中的语言设置为高级学生。在定义了sub1之后,它在IronScheme控制台中也能正常工作。为什么在DrRacket中工作,但不在控制台的球拍中工作

的错误信息是:

reference to undefined identifier: R 

alt textalt text

+0

我假设这些是单独运行。我会确保你有最新版本的球拍,如果它仍然存在,请在plt邮件列表上提问或者提交一个错误。你会发现PLT的人对你的反应非常敏感。 您的崩溃发生在REPL代码中,但我不知道R从哪里来。 – deinst 2010-07-23 23:06:55

+0

感谢您的帮助。我会做更多的研究,然后询问PLT人员是否无法解决问题。 – ecounysis 2010-07-23 23:30:10

当我键入到控制台这个我得到

Welcome to Racket v5.0. 
> (define pick 
    (lambda (num lat) 
    (cond ((null? lat) (quote())) 
     ((= (sub1 num) 0) (car lat)) 
     (else 
       (pick (sub1 num) (cdr lat)))))) 
> (define brees (quote (a b c d e touchdown g h i))) 
> (pick 6 brees) 
'touchdown 

你是如何在控制台上运行呢?如果你正在加载它,你可能需要第一行#lang Racket

+0

我不知道我做错了什么。它现在似乎工作。我只是通过运行racket.exe并在REPL中输入所有内容来在Windows上运行Racket。奇怪的。谢谢。 – ecounysis 2010-07-23 19:40:24

+1

我无法找到我看到过的地方,但我认为球拍默认使用过去使用的最新#lang。这可能解释了这种不稳定的行为。 – 2011-07-15 11:19:54