我相信这是有效的 Clojure 代码——并且在 Lein 控制台 REPL 中运行良好——但 Cursive REPL 中的错误:
Connecting to local nREPL server...
Clojure 1.8.0
nREPL server started on port 41303 on host 127.0.0.1 - nrepl://127.0.0.1:41303
*ns*
=> #object[clojure.lang.Namespace 0x4394b860 "user"]
(defn concat-some
[f vec1 vec2]
((fn [x] (filter f x)
(concat vec1 vec2))))
=> #'user/concat-some
(concat-some even? [1 2 3] [4 5 6])
clojure.lang.ArityException: Wrong number of args (0) passed to: user/concat-some/fn--4953
我在这里错过了什么吗?
谢谢您的帮助!
编辑和跟进:
这绝对是一个 Parinfer 问题。这段代码:
(defn concat-some
[f vec1 vec2]
((fn [x] (filter f x))
(concat vec1 vec2)))
(concat-some even? [1 2 3] [4 5 6])
在打开 Parinfer 的情况下粘贴到 Cursive REPL 时会产生不正确的粘贴,并导致上面的 ArityException。在打开 Paredit 或关闭结构编辑的情况下粘贴到相同 REPL 中的相同代码会产生预期的输出:
;; => #'user/concat-some
;; => (2 4 6)
我不知道在 Cursive 中活动时的结构编辑在编辑器中使用 - 以及 REPL。无论模式如何,我仍然希望有效代码是有效代码,并且想知道这是否是粘贴到 Cursive/Parinfer REPL 的预期结果。(?)
再次感谢您对此的帮助。