我写的这段代码给了我错误:
java.lang.Long cannot be cast to clojure.lang.IFn
这意味着我正在使用一个预期函数的数字。
我认为它与clojure.math.numeric-tower的expt函数有关,但我不确定。神秘错误消息FTL。
(ns point-normalize.core
(:require [clojure.math.numeric-tower :as math :only (sqrt expt)]))
(defn normalize [x y]
(let [x1 (/ x (math/sqrt ((math/expt x 2)+ (math/expt y 2))))
y1 (/ y (math/sqrt ((math/expt x 2)+ (math/expt y 2))))]
(x1 y1)))
任何提示都将不胜感激。谢谢。
答案 0 :(得分:3)
+在错误的位置:
((math/expt x 2)+ (math/expt y 2)))
应该是:
(+ (math/expt x 2) (math/expt y 2)))
和y1也一样。由于你在其他地方有正确的看法,它看起来像一个简单的拼写错误。
虽然在clojure代码中看到)))))))
是很正常的,但((
的出现次要了。