试图重写clojure映射有什么错

试图重写clojure映射有什么错,clojure,Clojure,我是clojure的新手,一直都在学习非常棒的教程 我正在尝试编写一个新的map函数,它将返回一组结果 到目前为止,我有下面的代码,但我一直收到一个错误,上面说: java.lang.IllegalArgumentException: Parameter declaration "mapset" should be a vector 下面是代码(我使用的是Leiningen): 我的第一个版本实际使用了let,如下所示,但抛出了相同的错误: (defn mapset "Works like m

我是clojure的新手,一直都在学习非常棒的教程

我正在尝试编写一个新的map函数,它将返回一组结果

到目前为止,我有下面的代码,但我一直收到一个错误,上面说:

java.lang.IllegalArgumentException: Parameter declaration "mapset" should be a vector
下面是代码(我使用的是Leiningen):

我的第一个版本实际使用了
let
,如下所示,但抛出了相同的错误:

(defn mapset
"Works like map but returns a set"
; First call to the function
([f items]
  (mapset f items []))
; Second call to the function
([f items result]
  (if (empty? items)
  (set result)
  (let [[item & other-items] items]
    (recur f (into [] other-items) (conj result (f item)))))))
非常感谢您的帮助(以及对代码的批评)


谢谢

经过进一步调查,我意识到我忘了添加:

[& args]
-main
函数中的docstring结尾,如中所示:

(defn -main
"Call the mapset function"
[& args]
(mapset inc [1 1 2 2]))
(defn -main
"Call the mapset function"
[& args]
(mapset inc [1 1 2 2]))