gpt4 book ai didi

方案的 "expected a procedure that can be applied to arguments"

转载 作者:行者123 更新时间:2023-12-02 08:06:36 30 4
gpt4 key购买 nike

我使用 DrRacket。我对这段代码有疑问:

          (define (qweqwe n) (
(cond
[(< n 10) #t]
[(>= (lastnum n) (pochtilastnum n)) (qweqwe (quotient n 10))]
[else #f]
)
)
)
(define ( RTY file1 file2 )

(define out (open-output-file file2 #:mode 'text #:exists 'replace))
(define in (open-input-file file1))
(define (printtofile q) (begin
(write q out)
(display '#\newline out)
))
(define (next)
(define n (read in))
(cond
[(equal? n eof) #t]
[else (begin
((if (qweqwe n) (printtofile n) #f))
) (next)]
)
)
(next)
(close-input-port in)
(close-output-port out))

但是当我开始( RTY "in.txt""out.txt")时,我在 ((if (qweqwe n) (printtofile n) #f)) 处出现错误:

    application: not a procedure;
expected a procedure that can be applied to arguments
given: #f
arguments...: [none]

有什么问题吗?

添加:我将代码更改为:

(cond 
[(equal? n eof) #t]
[else
(if (qweqwe n) (printtofile n) #f)
(next)]
)

但问题仍然存在。

最佳答案

有一些不必要的括号,不要这样做:

((if (qweqwe n) (printtofile n) #f))

试试这个:

(if (qweqwe n) (printtofile n) #f)

也在这里:

(define (qweqwe n)
((cond [(< n 10) #t]
[(>= (lastnum n) (pochtilastnum n)) (qweqwe (quotient n 10))]
[else #f])))

应该是:

(define (qweqwe n)
(cond [(< n 10) #t]
[(>= (lastnum n) (pochtilastnum n)) (qweqwe (quotient n 10))]
[else #f]))

在这两种情况下,问题都在于,如果您用 () 括起一个表达式,则意味着您正在尝试调用一个过程。鉴于上面的 ifcond 表达式的结果不返回过程,就会发生错误。另外,原始代码中的 begin 都是不必要的,cond 在每个条件之后都有一个隐式的 begin,对于 a 的主体也是如此过程定义。

关于方案的 "expected a procedure that can be applied to arguments",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16443348/

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