Racket违反了以下代码:
(define (fringe x)
(append (car x) (fringe (cdr x))))
有什么想法吗?
答案 0 :(得分:3)
之所以发生这种情况是因为(car x)
而不是返回一个列表(如果不知道x
的实际值会导致错误,则很难确定。) append
是在两个列表之间定义的操作。如果您想在列表的顶部添加元素,请使用cons
代替append
。
这就是我的意思:
(append 1 '(2 3))
=> append: expected argument of type <proper list>; given 1
(append '(1) '(2 3))
=> '(1 2 3)
(cons 1 '(2 3)) ; the recommended way!
=> '(1 2 3)