成績のリストを取得して GPA を出力する Grade Point Average (GPA) を計算するプログラムを作成しようとしています。(宿題ではなく、練習として)。
テストケース:
(GPA? '(A C B B))
3.0
これが私の最善の推測です:
(define a 4.0)
(define b 3.0)
(define c 2.0)
(define d 1.0)
(define f 0.0)
(define (mysum lst)
(let loop ((lst lst) (accum 0))
(cond
[(null? lst) accum]
[else (loop (cdr lst) (+ accum (car lst)))])))
次のエラーが表示されます。
「+ の例外: a は数値ではありません」
テストケースを実行すると:
(mysum '(1 2 3 a))
10 を返す必要がありますが、プロシージャで a を 4.0 として定義してはなりません。
誰かがこの問題を簡単に説明できますか?