Если я запускаю библиотеку с заемщиками и книгами:
(s/def ::brs (s/coll-of ::br/borrower))
(s/def ::bks (s/coll-of ::bk/book))
И мне нужна универсальная функция, которая добавляет элемент в любую коллекцию:
(defn add-item [x xs]
(if (some #{x} xs)
xs
(cons x xs)))
Как мне написатьспецификация, которая гарантирует, что я не могу добавить книгу заемщикам и наоборот?
Потому что эта спецификация:
(s/fdef add-item
:args (s/fspec :args (s/or :is-brs (s/and (s/cat :x ::br/borrower) (s/cat :xs ::brs))
:is-bks (s/and (s/cat :x ::bk/book) (s/cat :xs ::bks))))
:ret (s/or :ret-brs ::brs
:ret-bks ::bks))
не работает.: - (
Спасибо за помощь!