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

时间:2016-10-28 23:58:27

标签: list scheme concatenation sublist

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

(     define(concatenate list1 list2)

(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)

1 个答案:

答案 0 :(得分:0)

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

(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)