(defn modes [coll] (let [distrib (frequencies coll) [value freq] [first second] ; name the key/value pairs in the distrib (map) entries sorted (sort-by (comp - freq) distrib) maxfq (freq (first sorted))] (map value (take-while #(= maxfq (freq %)) sorted))))