这个追加有什么问题?

时间:2013-02-20 21:17:54

标签: scheme racket

Racket违反了以下代码:

(define (fringe x)
  (append (car x) (fringe (cdr x))))

有什么想法吗?

1 个答案:

答案 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)