Почему это работает в DrRacket, а не в Racket из консоли

(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 установлен на Advanced Student. Он также отлично работает в консоли IronScheme после определения sub1.

Сообщение об ошибке:

reference to undefined identifier: R

alt textальтернативный текст


person eric.christensen    schedule 23.07.2010    source источник
comment
Я предполагаю, что это отдельные прогоны. Я бы удостоверился, что у вас установлена ​​последняя версия racket, и если она не исчезнет, ​​спросите в списке рассылки plt или сообщите об ошибке. Люди из PLT — самая отзывчивая толпа, какую только можно найти. Ваш сбой происходит в коде REPL, но я понятия не имею, откуда берется R.   -  person deinst    schedule 24.07.2010
comment
Спасибо за вашу помощь. Я проведу еще немного исследований, а затем спрошу людей из PLT, если я не могу это понять.   -  person eric.christensen    schedule 24.07.2010


Ответы (1)


Когда я набираю это в консоли, я получаю

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 для первой строки.

person deinst    schedule 23.07.2010
comment
Я не знаю, что я делал не так. Кажется, теперь это работает. Я просто запускал Racket в Windows, запустив racket.exe и введя все в REPL. Странный. Спасибо. - person eric.christensen; 23.07.2010
comment
Я не могу найти, где я это видел, но я думаю, что рэкет по умолчанию использует последний #lang, который вы использовали в прошлом. Это может объяснить такое неустойчивое поведение. - person Thaddee Tyl; 15.07.2011