Scheme 语法为:绑定匹配失败-方案错误?

Scheme 语法为:绑定匹配失败-方案错误?,scheme,Scheme,我不确定这里出了什么问题,我相信我的语法是正确的,但我不知道错误在说什么 (define (even-nm-inst? n) (cond ((= n 2) #t) ((= n 4) #t) ((= n 6) #t) ((= n 8) #t) ((= n 10) #t) ((> n 2) (modulo n 2) (cond ((= n 0) #t) (cond ((= n 1) #f) ((< n 2)

我不确定这里出了什么问题,我相信我的语法是正确的,但我不知道错误在说什么

(define (even-nm-inst? n)
(cond ((= n 2) #t)
    ((= n 4) #t)
    ((= n 6) #t)
    ((= n 8) #t)
    ((= n 10) #t)
    ((> n 2)
     (modulo n 2)
     (cond ((= n 0) #t)
     (cond ((= n 1) #f)
    ((< n 2)            
     (modulo n 2)       
     (cond ((= n 0) #t)
           ((= n 1) #f)
           )))))))
(定义(偶数纳米仪器)
(cond(=n2)#t)
(=n4)#t)
(=n6#t)
(=n8#t)
(=N10#t)
((>n2)
(模n2)
(cond(=n0)#t)
(cond(=n1)#f)
(
我想做一个函数,确定一个数是偶数还是非偶数

返回的特定错误为: /Applications/racketv6.6/share/pkgs/r5rs-lib/r5rs/main.rkt:493:22:语法为:(.rest)中绑定匹配失败。

知道发生了什么吗?我知道这是代码的这一特定部分,因为我在不同的部分上有标题,错误出现在这个块的标题下


提前谢谢,我对这个计划是全新的。

不,这不对-你的
条件到处都是,显然太多了,以至于球拍都被搞糊涂了

根本不清楚你为什么要写这些代码

(define (even-nm-inst? n)
    (= (modulo n 2) 0))

就像使用
偶数?
一样,这是一个不可原谅的错误语法

但另一方面,看起来您使用的是非常传统的R5RS语言。如果这是因为你在课堂上,而你的导师要求你这样做,那么你就被困在课堂上了。如果不是的话,你一定要尽快换成主要的球拍语言,或者是初级的学生语言;他们两个都不应该给你那个可怕的信息

具体来说,在开始的学生语言中,您将看到以下消息:
“条件:期望一个包含问题和答案的子句,但发现一个包含3个部分的子句”。。。它突出显示了该子句中存在问题的三个部分。

既然您使用的是DrRacket,为什么不按CTRL+i组合键,它将根据您编写的内容而不是您希望编写的内容格式化代码。结果是:

(define (even-nm-inst? n)
  (cond ((= n 2) #t)
        ((= n 4) #t)
        ((= n 6) #t)
        ((= n 8) #t)
        ((= n 10) #t)
        ((> n 2)
         (modulo n 2) ; doesn't do anything since result not used
         (cond ((= n 0) #t)
               (cond ((= n 1) #f) ; cond doesn't exist as a variable
                     ((< n 2)            
                      (modulo n 2)       
                      (cond ((= n 0) #t) ; cond doesn't exist as a variable
                            ((= n 1) #f)
                            )))))))
您可以使用模,并且它可以用于生成不带任何条件的结果:

(define (my-even? n)
  (= 0 (modulo n 2)))
(define (my-even? n)
  (= 0 (modulo n 2)))