(defenum Key [space 32 escape 256 left 263 right 262]) (defn key-name [k Key] string (cond (= k :space) "space" (= k :escape) "escape" :else "an arrow")) (defn main [] () ;; :space resolves against the parameter's enum at compile time. ;; A typo is an error here, not a wrong number later. (println (key-name :space)) (println (key-name :left)))