I did a bit more work with Clojure today. My imperative programming habits are still bleeding through. The exercise introduced cond as a sort of case statement for flow control. I wrote a simple cond statement but was getting a bizarre runtime error:

(defn my-fn
[x]
(cond
(x < 0) "negative"
(x = 0) "zero"
(x > 0) "positive"
)
)
Terminal window
user=> (my-fn 1)
Execution error (ClassCastException) at user/my-fn (REPL:4).
class java.lang.Long cannot be cast to class clojure.lang.IFn (java.lang.Long is in module java.base of loader 'bootstrap'; clojure.lang.IFn is in unnamed module of loader 'app')

It took me a frustratingly long time to realize I needed to use prefix notation for the conditions in the cond.

(defn my-fn
[x]
(cond
(< x 0) "negative"
(= x 0) "zero"
(> x 0) "positive"
)
)
Terminal window
user=> (my-fn 1)
"positive"