我不确定这里出了什么问题,我相信我的语法是正确的,但我不知道这个错误是什么意思。
(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)
)))))))
我试图创建一个确定数字是否均匀的函数。
返回的具体错误是: 即可。 ../../Applications/Racket v6.6 / share / pkgs / r5rs-lib / r5rs / main.rkt:493:22:with-syntax:绑定匹配失败:(_。rest) < / p>
知道发生了什么事吗?我知道它是代码的这个特定部分,因为我在不同的部分有标题,错误出现在这个块的标题下。
在此先感谢,我是一个崭新的计划。
答案 0 :(得分:1)
嗯,这是一个不可原谅的错误语法错误......
但另一方面,您似乎正在使用极其传统的R5RS语言。如果那是因为你在课堂上并且你的教练需要它,那么你就会坚持下去。如果没有,你应该尽快切换到主要的Racket语言或Beginning Student语言;他们俩都不应该给你这个可怕的信息。
具体来说,在Beginning Student语言中,您将收到以下消息: &#34; cond:期望一个带有问题和答案的条款,但找到一个包含3个部分的条款&#34; ......它突出了该条款的三个部分,即问题。
答案 1 :(得分:1)
由于您正在使用DrRacket,为什么不按 CTRL + i 并根据您所写的内容格式化代码而不是您想要的格式已经写了。结果是:
p.STOCK_RIC, p.WEEK_NUMBER
现在。如果使用(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)
)))))))
不是一个选项我会写这个:
even?
您使用modulo,它可用于生成没有任何条件的结果:
(define (my-even? n)
(cond ((negative? n) (my-even? (- n)))
((zero? n) #t)
((= n 1) #f)
(else (my-even? (- n 2)))))
(my-even? -5) ; ==> #f
(my-even? 10) ; ==> #t
答案 2 :(得分:0)
不,这不正确 - 你的cond
到处都是,而且显然让Racket感到困惑。
根本不清楚为什么你写了所有代码;
(define (even-nm-inst? n)
(= (modulo n 2) 0))
会使用even?
。