我正在尝试使用 SICP 学习函数式编程。我想使用 Clojure。
Clojure 是 Lisp 的一种方言,但我对 Lisp 非常陌生。此代码片段不干净且不可读。如何使用 Lisp 方言编写更高效的代码?
以及如何从其他函数传递多个参数函数?
(defn greater [x y z]
(if (and (>= x y) (>= x z))
(if (>= y z)
[x,y]
[x,z])
(if (and (>= y x) (>= y z))
(if (>= x z)
[y,x]
[y,z])
(if (and (>= z x) (>= z y))
(if (>= y x)
[z,y]
[z,x])))))
(defn sum-of-squares [x y]
(+ (* x x) (* y y)))
(defn -main
[& args]
(def greats (greater 2 3 4))
(def sum (sum-of-squares greats)))