Scheme程序将子列表处理成一个列表

时间:2016-10-24 11:28:32

标签: list scheme flatten cons cdr

我刚刚开始学习计划,我发现cons-cdr部分有点难以理解。我正在创建一个获取列表的函数,然后显示该列表中的所有原子,包括在子列表中,就像它是一个大列表一样。它看起来像这样: (flatten'(1(2 3)4 5(6 7)))

  

(1 2 3 4 5 6 7)

这是我的代码:

(define (flatten list1)
    (if (not (empty? list1))
     (if (atom? (car list1))
     (cons (car list1)(flatten (cdr list1)))
     (begin
     (flatten (car list1))
     (flatten (cdr list1))))
     '()))

但是,执行此操作时,会删除子列表。所以(flatten'((1 2)3 4)会给(3 4)而不是(1 2 3 4)。

有任何帮助吗?问题可能在"(开始"部分,但我无法弄明白......

谢谢!

1 个答案:

答案 0 :(得分:0)

在您的begin

中尝试这样的操作
(append (flatten (car aList)) (flatten (cdr aList)))

如果不一样的话,也可以发布它几乎相同的问题: flatten list