Я пытаюсь написать функцию, которая упростит произвольный список логических выражений, но моя функция не проходит определенные тесты.
(defn sim
[expression]
(if (some true? expression)
true
(if (= (count expression) 2)
(if (some false? expression)
false
(if (map simple-symbol? expression)
(if (= (count expression) 2)
(drop 1 expression)
expression)))
(if (some simple-symbol? (drop 1 expression))
(filter simple-symbol? expression)))))
Когда я вызываю с использованием (sim '(or x false))
, я ожидаю, что вывод будет (x)
, но вместо этого он возвращает (or x)
.И наоборот, когда я звоню с использованием (sim '(or x))
, мой вывод (x)
, как и ожидалось.