2012-05-24 180 views
0

我有些東西會返回元素列表,但有時元素列表也是元素列表。這列表中的球拍列表元素

例子是:

(1 2 3 (4 5) (6 7 (8))) 

我似乎無法編寫一個能夠將其轉換成與剛剛元素列表的功能。

(1 2 3 4 5 6 7 8) 
+2

您所描述的過程,通常稱爲'flatten'。它是Racket的一部分,並且在Stack Overflow中已經討論過[之前](http://stackoverflow.com/questions/8387583/writing-flatten-method-in-scheme)。 –

+0

您應該將您的解決方案作爲答案發布,然後接受它,以便人們知道它已被解決。 –

+0

我將你想出的答案移到了答案上。 –

回答

0

下面是原來的海報來到了,任何人一旦發生這個問題的利益答案:

(define (test expresssion) 
    (cond ((empty? expresssion) null) 
     ((not (list? expresssion)) (list expresssion)) 
     (else (append (test (first expresssion)) 
         (test (rest expresssion)))))) 

(test '(A (B (C) D) A)) ; => '(A B C D A)