首页 文章

方案中的“未绑定标识符”错误

提问于
浏览
5

我正在使用drscheme:http://www.archlinux.org/packages/extra/x86_64/drscheme/

我正在尝试使用我的教科书中的示例代码,但我不断收到“未绑定标识符”错误 . 是因为方案解释器配置不正确吗?或者代码是完全错误的?

这里有一些例子:

Input:

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

Output:

欢迎来到DrScheme,版本4.2.5 [3m] . 语言:方案;内存限制:128 MB .

expand: unbound identifier in module in: COND

Input:

#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))
  ))

Output:

expand: unbound identifier in module in: LET

注意:我尝试使用LET *,因为我读到了这个:stackoverflow.com/ questions / 946050 / using-let-in-scheme但它会产生相同的错误 .

谢谢 !

1 回答

  • 5

    它看起来像是该语言设置的区分大小写问题 . 我知道Scheme应该是不区分大小写的,但是当我尝试时

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

    它运作得很好 .

相关问题