У меня есть функция Lisp, которая возвращает либо MAX двух значений, либо MIN двух значений.Прямо сейчас мой код имеет несколько относительно сложных выражений для оценки VALUE1 и VALUE2.
(defun treemax (bilist &optional ismin)
(cond
;; Compute minimum
(ismin (min (COMPLEX_EXPRESSION_1) (COMPLEX_EXPRESSION_2)))
;; Compute maximum
(t (max (COMPLEX_EXPRESSION_1) (COMPLEX_EXPRESSION_2)))))
Проблема здесь в том, что COMPLEX_EXPRESSION_1 и COMPLEX_EXPRESSION_2 на самом деле занимают много много строк кода.Я действительно хотел бы не повторять их.Есть ли более эффективный способ вызова этого?
По сути, я пытаюсь сделать унарную функцию, если не значения.Если вы знакомы с C или его вариантами, по сути, я искал следующую концепцию:
((ismin ? min : max) COMPLEX_EXPRESSION_1 COMPLEX_EXPRESSION_2)
, и поэтому я условно выбираю, в какую функцию отправлять аргументы.Имеет ли это смысл?