2016-04-28 20 views
0

我對Scheme不是很熟悉,所以我遇到了問題。在列表中創建列表總和(Scheme)?

編寫一個方案程序,其中包含至少包含一個數字的數字列表的列表。你的程序應該返回一個列表,其中包含每個這些數字列表的個人總和。例如:((1 2 3)(4 5)(6)(7 8 9 10)) - >(6 9 6 34)

到目前爲止,我正在嘗試創建listCreator函數和sumHelper函數。我仍在做測試,但是我遇到了一個錯誤。

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

我的錯誤是:汽車:預計一對,因爲2

任何幫助或解決這個問題的方向將不勝感激。

+0

謝謝!我知道這一定很簡單。 – desireToLearn

+0

Opps,這是不正確的。它應該是'(map(lambda(v)(apply + v))lst)'。但我有一個解釋你的listCreator出了什麼問題的答案。 –

回答

1

你的listCreator定義不建,也不讓自己在列表中的其餘部分:

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

同樣的值,如果列表爲空應該是空列表:'(),而不是0

完成這些更改後,您的代碼將按照書面形式工作。