gpt4 book ai didi

function - Racket : expected: procedure?

转载 作者:行者123 更新时间:2023-12-03 09:08:55 25 4
gpt4 key购买 nike

我有以下代码:

(define numbers '(2 3 5 3 1 22 2))

(define (count val l)
(if (null? l)
0
(+
(if (= (first l) val) 1 0)
(count val (rest l))
)
)
)

(display (count 6 numbers))

(对不起,如果我的代码看起来很糟糕,只需要使用这种语言一次)

编译器说:
count: contract violation
expected: procedure?
given: 6
argument position: 1st
other arguments...:
'(3 5 3 1 22 2)

最佳答案

您正在交互区域中输入代码。

别。在源代码区域中输入它,然后加载它。然后就可以了。

发生的是,函数 count 已经存在,您正在重新定义它。但是,如果您在交互区域中执行此操作,则新函数将使用已经存在的函数,而不是像应该那样递归地调用自身:

(define (count val l) 
(if (null? l)
0
(+
(if (= (first l) val) 1 0)
(count val (rest l)) ;; ****** HERE
)
)
)

并且现有函数期望将过程作为其第一个参数,如其文档所示。

关于function - Racket : expected: procedure?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59991010/

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