gpt4 book ai didi

lisp - 程序按预期工作,但错误消息仍然出现

转载 作者:太空宇宙 更新时间:2023-11-03 18:46:59 26 4
gpt4 key购买 nike

我一直在尝试通过“计算机程序的结构和解释”一书学习编程。为了做练习,我一直在使用 DrRacket(我找不到适用于 Windows 7 的方案解释器,DrRacket 看起来不错),到目前为止还没有遇到任何问题。但是在做练习 1.22 时,我遇到了一个问题。我编写了一个程序,它给出了给定数量 (n) 个更大的素数比a:

(define (search-for-primes a n)
(define (sfp-iter a n counter)
(cond ((and (prime? a) (= counter n))
((newline) (display "end")))
((prime? a)
((newline)
(display a)
(sfp-iter (+ a 1) n (+ counter 1))))
(else (sfp-iter (+ a 1) n counter))))
(sfp-iter a n 0))

该过程按预期工作,显示了它应该显示的所有内容,但是在显示结束 之后,它显示了以下错误消息:

应用程序:不是程序; 期望一个可以应用于参数的过程 给出:# 参数...: #

并突出显示以下代码行:

((newline) (display "end"))

问题是什么?(对于拼写错误,我深表歉意,因此,英语不是我的母语,对于格式或标记方面的任何错误,我也深表歉意,我是新来的)

最佳答案

你有几个括号问题,这解决了它:

(define (search-for-primes a n)
(define (sfp-iter a n counter)
(cond ((and (prime? a) (= counter n))
(newline) (display "end"))
((prime? a)
(newline)
(display a)
(sfp-iter (+ a 1) n (+ counter 1)))
(else (sfp-iter (+ a 1) n counter))))
(sfp-iter a n 0))

cond 的第一个和第二个条件中,您错误地用 () 包围了代码。这是不必要的,在 cond 子句中,条件之后的所有表达式都隐式地包含在 (begin ...) 形式中,因此无需将它们组合在一起.

关于lisp - 程序按预期工作,但错误消息仍然出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15855904/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com