リスト内のすべてのアイテムをカウントするScheme関数を作成しようとしていますが、使用可能な長さ関数とは異なり、内部リストもカウントするため、 countAll '(a (ab)) は2ではなく3を返します.
最初のチェックは空のリストのためのもので、2番目はリストの先頭が現在リスト自体であるかどうかをチェックすることになっています。次に、そのリストの長さを合計に追加し、そうでない場合は次の再帰呼び出しを呼び出す必要があります。 t、合計に1を追加して関数を再帰的に呼び出す3番目の部分にスキップするだけです。
構文エラーが発生しており、自分のアプローチについて確信が持てません。私はこれを正しい方法で行っていますか?これを行うためのより良い/より簡単な方法はありますか?
(define countAll
(lambda (list)
(if (null? list)
0
((if (list? (car list)
(+ length (car list)
(countAll (cdr list))))))
(+ 1
(countAll (cdr list))))))
(+ 1
(countAll(cdr list)
)))))