У меня есть одна функция, которая выполняет некоторую (возможно, длительную) работу (defn workwork [x] ...)
, и несколько других функций, чтобы заранее проверить, будет ли вызов успешным (defn workwork-precondition-1 [x] ...)
.
Функции предварительных условий должны оцениваться каждый раз, когда вызывается workwork
(например, с использованием :pre
). Функции предварительных условий также должны быть собраны (и обработаны) в одной функции и доступны напрямую для клиентского кода (например, для отключения кнопки).
Каков идиоматический способ решить эту проблему в Clojure, избегая при этом дублирования кода?
В частности, есть ли способ оценить предварительные условия функции без запуска тела функции?