Tar*_*nen 3 conditional-statements 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)
Run Code Online (Sandbox Code Playgroud)
我用这些值测试了程序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)
Run Code Online (Sandbox Code Playgroud)
谁能帮我找出问题所在。
如果“then”或“else”部分中有多个表达式,则必须将它们括在 a 内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))))
Run Code Online (Sandbox Code Playgroud)