2016-04-28 9 views
0

Ich bin nicht sehr vertraut mit Scheme, also habe ich Probleme mit dem Problem.Erstellen einer Liste von Summen von Listen in einer Liste (Schema)?

Schreiben Sie eine Schema-Prozedur, die eine Liste von Nummern mit jeweils mindestens 1 Nummer enthält. Ihr Verfahren sollte eine Liste zurückgeben, die die einzelnen Beträge jeder dieser Nummernlisten enthält. Zum Beispiel: ((1 2 3) (4 5) (6) (7 8 9 10)) -> (6 9 6 34)

Bisher versuche ich eine listCreator-Funktion und eine sumHelper-Funktion zu erstellen. Ich mache immer noch Tests, aber ich bleibe mit einem Fehler stecken.

(define lst '((1 2 3) (4 5) (6) (7 8 9 10))) 

    lst 

    (define sumHelper 
     (lambda (lst) 
     (if (null? lst) 
      0 
      (+ (car lst) (sumHelper (cdr lst)))))) 

    (define listCreator 
     (lambda (lst) 
     (if (null? lst) 
      0 
      (sumHelper (car lst))))) 

Mein Fehler ist: Auto: erwartet ein Paar, da 2

Jede Hilfe oder Richtung zur Lösung dieses Problems würde sehr geschätzt werden.

+0

Danke! Ich wusste, dass es etwas Einfaches sein musste. – desireToLearn

+0

Opps, das ist falsch. Es sollte 'sein (map (lambda (v) (apply + v)) lst)'. Aber ich habe eine Antwort, die erklärt, was mit deinem listCreator los war. –

Antwort

1

Deine Definition von listCreator nicht bauen, noch selbst von der Liste für den Rest gilt:

(define listCreator 
    (lambda (lst) 
    (if (null? lst) 
     '() 
     (cons (sumHelper (car lst)) (listCreator (cdr lst)))))) 

Auch der Wert, wenn die Liste ist null sollte die leere Liste sein: '() und nicht 0

Sobald diese Änderungen vorgenommen wurden, funktioniert Ihr Code wie geschrieben.