【发布时间】:2018-04-26 19:39:10
【问题描述】:
我已经开始使用看似令人印象深刻的 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) apply 中多态函数的参数错误 在:(应用合并+向量)
问题 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
感谢您提供的任何帮助。
【问题讨论】:
-
from /r/clojure 得到答案了吗?如果是这样,请考虑在此处为未来的访问者添加答案或关闭问题。
-
对于问题 1,我得到了答案:使用 clojure.core.typed/Num。对于问题 2 和 3,不幸的是不是。详情见r/clojure
标签: clojure clojure-core.typed