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

cna*_*reu 6 scheme racket

我正在使用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 '())
))
Run Code Online (Sandbox Code Playgroud)

输出:

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

expand:模块中的未绑定标识符: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))
  ))
Run Code Online (Sandbox Code Playgroud)

输出:

expand:模块中的未绑定标识符:LET

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

谢谢 !

Bil*_*ard 7

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

(define (equalimp lis1 lis2)
        (cond
         ((null lis1) (null? lis2))
         ((null? lis2) '())
         ((eq? (car lis1) (car lis2)) (equalimp (cdr lis1) (cdr lis2)))
         (else '())
))
Run Code Online (Sandbox Code Playgroud)

它运作得很好.