Кажется, есть несколько способов реализации моделей данных в Clojure:
(type ^ {: type :: mytype} {: fieldname 1})
get
ting несуществующего ключа из карты вызывает исключение, вместо того, чтобы молча возвращать nil
) Мы достигли точки, когда карты / списки больше не работают для нас - мы сталкиваемся с множеством ошибок, которые предварительные / постусловия могут легко отловить, но занимают очень много времени в противном случае время выследить (и трудно написать эффективный re / post-условия для функций, которые принимают вложенные карты / списки / векторы), но мы не уверены, что из вышеперечисленного выбрать.
У нас есть три основные цели:
Как мы можем использовать возможности Clojure, чтобы помочь нам?