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

发布于 2024-08-31 08:25:47 字数 1217 浏览 3 评论 0原文

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

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

以下是一些示例:

输入:

#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,但它产生了相同的错误。

谢谢 !

I'm using drscheme from:
http://www.archlinux.org/packages/extra/x86_64/drscheme/

I'm trying to work with the sample code in my textbook, but I keep getting getting "unbound identifier" errors. Is it because the scheme interpreter is not configured correctly? or is the code just plain wrong?

Here are a few examples:

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:

Welcome to DrScheme, version 4.2.5 [3m]. Language: scheme; memory limit: 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

Note: I tried using LET* because I read this: stackoverflow.com/ questions/946050/using-let-in-scheme but it produces the same error.

Thanks !

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

迎风吟唱 2024-09-07 08:25:47

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

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

它工作得很好。

It looks like a case sensitivity issue for that language setting. I know Scheme is supposed to be case-insensitive, but when I tried

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

it worked just fine.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文