2016-04-28 15 views
0

私はSchemeにあまり慣れていないので、問題が発生しています。一覧のリストの作成(スキーム)?

少なくとも1つの数字を含む数字のリストを取得するスキーム手順を記述します。あなたの手続きは、それらの数字のリストの個々の合計を含むリストを返さなければなりません。例:((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)))))) 

も値をリストがnullの場合、空のリストでなければなりません:'()なく0

これらの変更が行われると、コードは書かれたとおりに動作します。

関連する問題