Я новичок в Clojure, и я изучаю, как написать программу, которая может упростить логические выражения (пока «и», чтобы выяснить, как все работает в первую очередь). Например:
(and-simplify '(and true)) => true
(and-simplify '(and x true)) => x
(and-simplify '(and true false x)) => false
(and-simplify '(and x y z true)) => (and x y z)
Я уже знал, как упростить два аргумента, что все, что я могу сейчас сделать, это:
(defn and-simplify []
(def x (and true false))
println x)
(and-simplify)
Я прочитал этот пост и попытался немного изменить мой код, но, похоже, он никуда меня не привел:
(defn and-simplify [&expr]
(def (and &expr))
)
Как правильно мне поступить?