gpt4 book ai didi

conditional-statements - 应用程序 : not a procedure racket

转载 作者:行者123 更新时间:2023-12-04 02:24:46 25 4
gpt4 key购买 nike

我是 Racket 的新手。我正在尝试根据用户的输入创建一个列表,当输入值 0 时,将打印前三个元素。

代码如下:

#lang racket
(define lst '())
(define (add)
(define n(read))
(if (= n 0)
;then
(
list (car lst) (cadr lst) (caddr lst)
)
;else
(
(set! lst (append lst (list n)))
(add)
)
)
)
(add)

我用值 1 2 3 4 5 0 测试了程序

但我一直收到这个错误:

application: not a procedure;
expected a procedure that can be applied to arguments
given: #<void>
arguments...:
'(1 2 3)

谁能帮我找出问题所在。

最佳答案

如果在“then”或“else”部分有多个表达式,则必须将它们包含在 begin 中,因为一对 () Scheme 用于函数应用 - 这解释了您遇到的错误。试试这个:

(define (add)
(define n (read))
(if (= n 0)
; then
(list (car lst) (cadr lst) (caddr lst))
; else
(begin
(set! lst (append lst (list n)))
(add))))

关于conditional-statements - 应用程序 : not a procedure racket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23296384/

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