関数の定義方法について何か誤解しているに違いありません。私はこの SICP の演習を行っています。「引数として 3 つの数値を取り、2 つの大きい数値の 2 乗和を返すプロシージャを定義します。」
REPLでこれを試してみましたが、うまくいくようです:
=> (reduce + (map (fn [x] (* x x)) (rest (sort '(2 1 0)))))
5
しかし、プロシージャを定義して数字をパラメータに置き換えると、エラーが発生します。
=> (defn my-procedure [a b c] (reduce + (map (fn [x] (* x x)) (rest (sort '(a b c))))))
ClassCastException clojure.lang.Symbol cannot be cast to java.lang.Number clojure.lang.Numbers.multiply (Numbers.java:146)
何が表示されないのですか? ありがとう!