I've been learning Clojure, and since I come from a Ruby, and before that Java background, I have trouble thinking procedurally.
Is there a more 'lispy' way to write this code, or is this ok?
(defn foo
([s t]
(let [x (+ 4 (- t s))]
(if (> 2 (if (> 6 x)
x
6)
x)
x
2))))
In clojure, like in any other language, it is usually best to use built-in functions whenever applicable. So since clojure has a min
and a max
function, so you can replace your if
s with:
(max 2 (min 6 x))
If those functions did not exist in clojure's standard library, I would have recommended defining them because putting the logic for min
and max
into their own function leads to much nicer code than having it all in the foo
function.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With