2024年的Clojure状况调查!中分享您的想法。

欢迎!请查看关于页面,了解更多关于此功能的信息。

+2
语法和读取器

1.8.0:

clj-rcon-test.core=> (defn- hi [as-codec & {:keys [offset] :or {:offset 0}}]
                #_=>   (println "hi"))
#'clj-rcon-test.core/hi

1.10.0:

clj-rcon-test.core=> (defn- hi [as-codec & {:keys [offset] :or {:offset 0}}]
                #_=>   (println "hi"))
Syntax error macroexpanding clojure.core/defn- at (form-init17556793069765460591.clj:1:1).
:offset - failed: simple-symbol? at: [:fn-tail :arity-1 :params :var-params :var-form :map-destructure :or 0] spec: :clojure.core.specs.alpha/or
{:keys [offset], :or {:offset 0}} - failed: simple-symbol? at: [:fn-tail :arity-1 :params :var-params :var-form :local-symbol] spec: :clojure.core.specs.alpha/local-name
{:keys [offset], :or {:offset 0}} - failed: vector? at: [:fn-tail :arity-1 :params :var-params :var-form :seq-destructure] spec: :clojure.core.specs.alpha/seq-binding-form
as-codec - failed: vector? at: [:fn-tail :arity-n :bodies :params] spec: :clojure.core.specs.alpha/param-list

clj-rcon-test.core=>

为了提供上下文,这是我正在尝试调试的内容:https://github.com/gpittarelli/clj-rcon/blob/master/src/clj_rcon/codecs.clj#L6

1 答案

+5

被选择
 
最佳答案

这里的问题是:or期望的是一个符号到值的映射,而不是关键字到值的映射。不清楚这是规范中的疏漏,还是它从未应该被支持。

谢了!这招管用!
过去它是无意中允许的,并且已经被加强。重要的是,它之前的工作是静默的。
...