所以我从调用行返回了这个列表:
(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
我无法弄清楚这个错误来自哪里,任何帮助都会令人惊叹!
答案 0 :(得分:2)
在clojure中(lines)
表示"调用没有参数的函数行"。正如我们从您的定义中看到的那样,lines
不是函数,而是列表。
此外,在(tokenize-line [x])
中,您将包含String x的向量传递给需要String的函数。
此外,当你运行(into () ...)
时,这需要一些已经是序列的东西,并将其转换为相反的序列(因为当你添加元素时()
的行为,它们最终会被逆转顺序)。