(between? )

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.