Search code examples
clojure

What's wrong with this Clojure function?


I'am new to clojure and i wrote this func:

 (def fact (fn [n] (
   (apply * (drop 1 (range n))))))

When calling it i get the error:

ClassCastException class java.lang.Long cannot be cast to class clojure.lang.IFn (java.lang.Long is in module java.base of loader 'bootstrap'; clojure.lang.IFn is in unnamed module of loader 'app') my-stuff.core/fact (form-init3352210926102455316.clj:18)

Why?


Solution

  • You've got an extra parenthesis around apply:

    (def fact (fn [n]
                  (apply * (drop 1 (range n)))))