我正在嘗試在計劃語言中編寫GPA計算器。我認爲我遇到問題的唯一部分是我需要將字母轉換爲列表中的整數的部分。我正在使用eq?在下面的代碼中,因爲在他的一個例子中,我們的教授使用eq?將一個字母轉換爲一個整數。計劃高階函數 - GPA計算器
(define creditSum
(lambda (lst)
(if (or (not (list? lst)) (empty? lst))
0
(+ (car lst) (creditSum (cdr lst))))))
(define (gpa lst x)
(cond
((eq? x "A") 4.0)
((eq? x "B") 3.0)
((eq? x "C") 2.0)
((eq? x "D") 1.0)
((eq? x "F") 0.0)
(/ (creditSum x) (length x))))
我要電話號碼指定給每個字母,並使用這些信讓我作爲一個整數或小數輸出。例如,如果我輸入:(gpa'(A B A B))我的輸出應該是3.5。
可能不是用於字符串的正確比較。 '(eq?「a」「a」)'不一定是真的。相反,您需要使用[平等](http://www.schemers.org/Documents/Standards/R5RS/HTML/r5rs-Z-H-9.html#%_idx_218)。 –
可能重複[eq?,eqv?,equal?和=在Scheme中有什麼區別?](http://stackoverflow.com/questions/16299246/what-is-the-difference-between-eq- eqv-equal-in-scheme) –
eq?不會將字母轉換爲整數。情商?是一種等價關係,您可以在[文檔](http://www.schemers.org/Documents/Standards/R5RS/HTML/)中閱讀更多內容。你的教授可能犯了一個錯誤,或者你可能誤解了你的教授,但公式?不會將字母轉換爲整數。 –