Как назначить предикат для extra-validator-fn?
Как бы я назначил предикат для каждой проверки в extra-validator-fn следующей схемы defrecord:
(s/defrecord Item
[type :- (s/enum :solid :liquid)
unit :- (s/enum :kg :ml)]
(s/fn [{:as this :keys [type unit]}]
(or (and (= type :solid) (= unit :kg))
(and (= type :liquid) (= unit :ml)))))
Дополнительная проверка выдает исключение в этом примере:
(s/validate Item (map->Item {:type :solid :unit :ml}))
Здесь это читает: (not (passes-extra-validation? a-apriori.cli.core.Item))
Тем не менее, я хотел бы прочитать: (not ('invalid-unit-for-type a-apriori.cli.core.Item))