Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Clojure类型提示,无法解析类名Clojure.core$double_Clojure_Type Hinting - Fatal编程技术网

Clojure类型提示,无法解析类名Clojure.core$double

Clojure类型提示,无法解析类名Clojure.core$double,clojure,type-hinting,Clojure,Type Hinting,我有以下代码,但当试图键入hint作为最终的规范化函数时,编译器会抱怨:无法解析classname:clojure.core$double 我看不出在平方和或向量长度中没有使用的规格化函数有什么不同 谢谢 (defn ^double sum-of-squares "Given a vector v, compute the sum of the squares of elements." [^doubles v] (r/fold + (r/map #(* % %) v))) (de

我有以下代码,但当试图键入hint作为最终的规范化函数时,编译器会抱怨:无法解析classname:clojure.core$double

我看不出在平方和或向量长度中没有使用的规格化函数有什么不同

谢谢

(defn ^double sum-of-squares
  "Given a vector v, compute the sum of the squares of elements."
  [^doubles v]
  (r/fold + (r/map #(* % %) v)))

(defn ^double vec-length
  "Compute the length of vector v."
  [^doubles v]
  (Math/sqrt (sum-of-squares v)))

(defn ^doubles normalize
  "Compute the unit vector (normalize) v."
  [^doubles v]
  (let [l (vec-length v)]
    (into [] (r/map #(/ % l) v))))

返回值的类型提示必须放在参数向量之前,而不是名称之前

您的第一个定义应该如下所示

(defn sum-of-squares
  "Given a vector v, compute the sum of the squares of elements."
  (^double [^doubles v]
    (r/fold + (r/map #(* % %) v))))

小提示:函数定义中不需要额外的括号:
(defn平方和(^double[^doubles v](r/fold+(r/map#(*%%)v))
可以是
(defn平方和^double[^double v](r/fold+(r/map#(*%%)v))
。此外,前两个函数需要修复才能正常工作。