'get-student-average
'get-assignment-average
現在、課題の一環として、3つのメッセージを受け取り'add-grade
、必要に応じて情報を返すスキームプログラムを作成しようとしています。'add-grade
基本的に、学生ID、課題、成績がこの順序で挿入されたときに与えられます。私はまだ生徒と課題の平均メッセージに取り組んでいます(したがって、それらの前にセミコロンがあります)が、実行しようとすると失敗し続けるのは'add-grade
メッセージです。成績は無制限の変数であると言い続けています。これは私がテストしているコードです:
(define (make-grades)
(define T '())
(define (dispatch op)
((eq? op 'add-grade) (lambda(id as gr) (set! T (append T (list (list id as gr)
)))))
;((eq? op 'get-student-average) (lambda(x) ( )))
;((eq? op 'get-assignment-average)
))
(define grades (make-grades))
((grades 'add-grade) 7 1 85))
それで情報を取り戻そうとするのが間違っているのは何なのかわかりません。スキーム内のテーブルと同様に、トリックはリストをリストとしてnull値に追加し、それを設定することだと思いました。
他にもたくさんのテストケース('average
メッセージのテストケースを含む)がありますが、同じことを繰り返しているだけだと感じたので、それらを含めませんでした。私が言及しなければならないもう1つのことは、すべてのテストケースが、で始まり、'(
で終わるリスト内にまとめられているということ)
です。