6

我使用的 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 MB。

展开:模块中的未绑定标识符: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))
  ))

输出:

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

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

谢谢 !

4

1 回答 1

7

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

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

它工作得很好。

于 2010-04-29T01:48:02.903 回答