2015-11-16 11 views
0

所以我有这个名单与调用线返回:初级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 

我想不出这个错误来自哪里,任何帮助都会很棒!

回答

2

在clojure (lines)的意思是“调用没有参数的函数行”。正如我们从您的定义中看到的,lines不是一个函数,它是一个列表。

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

此外,当您运行(into() ...)时,这需要一些已经是序列的东西,并将其转换为反向序列(因为添加元素时的行为是(),它们以相反的顺序结束)。

+0

谢谢你,我再次对此感到满意,所以这真的有帮助! –