Here’s some code that maps a score to a grade.
(cond (<= 80 grade) "A" ((and (<= 70 grade) (> grade 80)) "B" ((and (<= 60 grade) (> grade 70)) "C" ((and (<= 50 grade) (> grade 60)) "D" ((and (<= 40 grade) (> grade 50)) "E" (> 40 grade) "F"))
A nicer way with currying.
(defn between? [low high] (fn [score] (and (<= low score) (> high score))) (cond (<= 80 grade) "A" ((between? 70 80) grade) "B" ((between? 60 70) grade) "C" ((between? 50 60) grade) "D" ((between? 40 50) grade) "E" (> 40 grade) "F"))
between?
takes the low
and high
parameters, and returns a function (fn [score] )
that checks if score
is between low
and high
.