0

私が書いたこのコードは私にエラーを与えます:

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)))

ヒントをいただければ幸いです。ありがとうございました。

4

1 に答える 1

3

+ の場所が間違っています:

((math/expt x 2)+ (math/expt y 2)))

次のようにする必要があります。

(+ (math/expt x 2) (math/expt y 2)))

y1 についても同様です。これは他の場所で正しいので、単純なタイプミスのように見えます。

)))))))clojure のコードで見られるのはごく普通のことですが、((一見しただけではわかりません。

于 2015-06-03T20:57:35.593 に答える