Я начал играть с довольно впечатляющей библиотекой clojure.typed, но очень скоро после того, как я столкнулся с проблемами, даже пытаясь применить ее к простым функциям. Кто-нибудь имеет опыт работы с библиотекой?
Проблема 1
(typed/ann square [Double -> Double])
(defn square "Square of"
[num]
(* num num))
Ошибка типа (clojure_study/ideas/swarm/vector_algebra.clj: 15: 3) Тип возвращаемого значения статического метода clojure.lang.Numbers/multiply - java.lang.Long, ожидается java.lang.Double.
Проблема 2
(typed/defalias CartesianVector '{:x Double :y Double})
(typed/ann v+ [CartesianVector * -> CartesianVector])
(defn v+ "Sum vector of vectors"
[& vectors]
(apply merge-with + vectors))
Тип Ошибка (clojure_study/ideas/swarm/vector_algebra.clj: 28: 3) Плохие аргументы в отношении полиморфной функции в применении in: (применить слияние с + векторами)
Проблема 3
(typed/ann v- [CartesianVector CartesianVector -> CartesianVector])
(defn v- "Diff vector of vectors"
[v1 v2]
(merge-with - v1 v2))
Ошибка типа (clojure_study/ideas/swarm/vector_algebra.clj: 33: 3) Полиморфная функция merge-with не может применяться к аргументам: Полиморфные переменные: К v
Спасибо за любую предоставленную помощь.