Clojure中的初学者:尝试将函数应用于列表中的项目

时间:2015-11-16 05:56:39

标签: clojure

所以我从调用行返回了这个列表:

(def lines  (into () (clojure.string/split-lines (slurp "input.txt"))))

我有这两个功能:

(defn tokenize-line [x] (clojure.string/split x #" " ))

(defn tokenize-list  [lst] (for [x lst] (tokenize-line [x])))

当我将(lines)作为参数传递给tokenize-list时,我收到此错误:

ClassCastException clojure.lang.PersistentList cannot be cast to clojure.lang.IFn

我无法弄清楚这个错误来自哪里,任何帮助都会令人惊叹!

1 个答案:

答案 0 :(得分:2)

在clojure中(lines)表示"调用没有参数的函数行"。正如我们从您的定义中看到的那样,lines不是函数,而是列表。

此外,在(tokenize-line [x])中,您将包含String x的向量传递给需要String的函数。

此外,当你运行(into () ...)时,这需要一些已经是序列的东西,并将其转换为相反的序列(因为当你添加元素时()的行为,它们最终会被逆转顺序)。