Создание конструкторов записей, которые проверяют схему в Clojure
Здравствуйте, товарищи-клоурцы,
известно, что defreord от Clojure не учитывает подсказки типов, и в поля записи могут быть помещены данные любого типа. Я ищу способ ограничить поля записей в Clojure.
Я начал экспериментировать с defrecord
Зов Призматической Схемы.
(require '[schema.core :as sc])
(sc/defrecord Item [size :- Long, colour :- String])
Сейчас звоню (->Item 1 2)
просто возвращает новый Item
Экземпляр несмотря на второй аргумент является число вместо строки. Я хочу, чтобы вызов конструктора вызвал какое-то исключение.
Я попробовал следующее, чтобы включить проверку на создание экземпляра записи без успеха.
- добавление
^:always-validate
метаданные для записи - призвание
(sc/set-fn-validation! true)
- призвание
(sc/with-fn-validation (->Item 1 1))
Можно ли включить проверку схемы на вызовах конструктора без написания пользовательских конструкторов?
Спасибо за помощь.