我使用Racket以相同的长度乘以列表。到目前为止,我已经尝试过:
(define (multiply-list a b)
(if ([(empty? a) (empty)])
else (cons(*car(a)car(b)))
cdr(a) cdr(b)))
我无法理解Racket的语法。我想将列表更新为cdr
。但我无法做到正确a
和b
是列表。
答案 0 :(得分:5)
我相信你的目标是这样:
(define (multiply-list a b)
(if (empty? a)
empty
(cons (* (car a) (car b))
(multiply-list (cdr a) (cdr b)))))
说明:
()
。在您的代码中,某些括号是不必要的,而其他括号则放错了位置。一个好的IDE可以帮助你把它们放在正确的位置[]
对是错误的,因此(empty)
因为empty
不是函数,我们用()
包围某些内容当我们想把它称为函数car(a)
。正确的方法是:(car a)
if
时,表达式的替代部分不得以else
开头,也许您会将if
表达式与cond
表达式混淆。