2016-10-28 3 views
0

Zum Beispiel kann die Liste ‚((1 2 3) (2 3 4) (4 5 6)) Ergebnis (1 2 3 2 3 4 4 5 6)Wie verkettete Unterliste im Schema?

( definieren (concatenate list1 list2)

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

)

Meine Idee ist liste1 = ‚((1 2 3) (2 3 4) (4 5 6)), und das Ergebnis ist list2 = (1 2 3 2 3 4 4 5 6)

Antwort

0

Wir brauchen nur einen Listenparameter, da es sich bereits um eine Liste von Listen handelt und es keinen Nutzen gibt r ein zweiter Parameter, der als Akkumulator verwendet werden soll. Versuchen Sie dies:

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

Perfekt, danke. – Jason