“несвязанный идентификатор” ошибки в схеме

Я использую drscheme от: http://www.archlinux.org/packages/extra/x86_64/drscheme/

Я пытаюсь работать с примером кода в своем учебнике, но я продолжаю получать получение "несвязанного идентификатора" ошибки. Это, потому что интерпретатор схемы не настроен правильно? или код просто неправильно?

Вот несколько примеров:

Вход:

#lang scheme
(define (equalimp lis1 lis2)
        (COND
         ((NULL? lis1) (NULL? lis2))
         ((NULL? lis2) '())
         ((EQ? (CAR lis1) (CAR lis2)) (equalimp (CDR lis1) (CDR lis2)))
         (ELSE '())
))

Вывод:

Добро пожаловать в DrScheme, версию 4.2.5 [3m]. Язык: схема; предел памяти: 128 МБ.

расширьтесь: несвязанный идентификатор в модуле в: COND

Вход:

#lang scheme
(define (quadratic_roots a b c)
  (LET (
        (root_part_over_2a
         (/ (SQRT (- (* b b) (* 4 a c))) (* 2 a)))
        (minus_b_over_2a (/ (- 0 b) (* 2 a)))
       )
  (DISPLAY (+ minus_b_over_2a root_part_over_2a))
  (NEWLINE)
  (DISPLAY (- minus_b_over_2a root_part_over_2a))
  ))

Вывод:

расширьтесь: несвязанный идентификатор в модуле в: ПОЗВОЛИТЬ

Примечание: Я пытался использовать, ПОЗВОЛЯЮТ*, потому что я считал это: stackoverflow.com/ questions/946050/using-let-in-scheme, но это производит ту же ошибку.

Спасибо!

6
задан Eli Barzilay 8 June 2010 в 21:50
поделиться

1 ответ

Похоже, проблема с чувствительностью к регистру для этой языковой настройки. Я знаю, что в Scheme не учитывается регистр, но когда я попробовал

(define (equalimp lis1 lis2)
        (cond
         ((null lis1) (null? lis2))
         ((null? lis2) '())
         ((eq? (car lis1) (car lis2)) (equalimp (cdr lis1) (cdr lis2)))
         (else '())
))

, все заработало отлично.

7
ответ дан 17 December 2019 в 00:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: