Подтвердить что ты не робот

Основы Clojure.typed

Я начал играть с довольно впечатляющей библиотекой 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

Спасибо за любую предоставленную помощь.

4b9b3361