如何在方案中连接子列表?

How concatenate sublist in scheme?

例如列表'((1 2 3) (2 3 4) (4 5 6)) 结果(1 2 3 2 3 4 4 5 6)

( 定义(连接列表 1 列表 2)

(if (null? list1)
    list2
(
 (concatenate (cdr list1) (append (car list1) '()) )
) 
)  

)

我的想法是 list1 = '((1 2 3) (2 3 4) (4 5 6)) 结果是 list2 = (1 2 3 2 3 4 4 5 6)

我们只需要一个列表参数,因为它已经是列表的列表,第二个参数用作累加器是没有用的。试试这个:

(define (concatenate lsts)
  (apply append lsts))

(concatenate '((1 2 3) (2 3 4) (4 5 6)))
=> '(1 2 3 2 3 4 4 5 6)