2014-10-03 103 views
1

我只是想讓Clojure成立。下面是一些代碼,我試圖在雷音REPL運行:讓Clojure運行(lein repl)

(def numbers (into [] (range 0 100))) 
(sum numbers) 

但我得到這個錯誤:

CompilerException java.lang.RuntimeException: Unable to resolve symbol: sum in this context, compiling:(NO_SOURCE_PATH:1:1)

我不知道這意味着什麼。我的安裝錯了嗎?

回答

1

我不知道這sum功能你想打電話,但你可以用reduce

user=> (def numbers (into [] (range 0 100))) 
#'user/numbers 
user=> (reduce + numbers) 
99 
+1

我的壞。這段代碼來自一本我學習語言的書。我沒有意識到'sum'並不是一個內置的函數,而是他們定義的一種引入'reduce'和'fold'的方法。感謝您爲我指出了這一點。 – Alex 2014-10-03 05:04:26

+0

這很有道理。祝你好運! – 2014-10-03 12:47:16

+0

爲什麼在這個答案中引用'+'?有一點瑣碎:在這種情況下,'apply'可以用來代替'reduce'來得到相同的結果(許多其他函數都是這樣的,它們需要一個可變的參數) – noisesmith 2014-10-03 13:33:22