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

欢迎!请访问关于页面了解如何操作的更多信息。

0
文档
{{defn}}的docstring是

bq. 与`(def name (fn [params* ] exprs*))`或`(def name (fn ([params* ] exprs*)+)`相同,可以在变量的元数据中添加任何doc-string或attrs。prepost-map定义了一个具有可选键::pre和:post的map,分别包含前或后条件的集合。

参数列表是

bq. `(defn name doc-string? attr-map? [params*] prepost-map? body)

有两个问题使得这个docstring对我来说难以理解

1. docstring没有提到{{attr-map?}} —— 它使我花了点时间去文档中跳转,从{{attr-map?}}跳跃到“添加到变量元数据的任何[...] attrs”。
2. docstring提到{{exprs*}},但参数列表提到了{{body}}。

5 回答

0

评论由:alexmiller发表

欢迎补丁,欣赏最小改动。

0

评论由:marc发表

我附带了一个补丁来处理两个问题

  • 将'exprs**'改为'body'以匹配参数列表。
  • 当引用多参数形式时,将'body+)'改为'body)+'。

我没有处理“任何attrs”指向attr-map,我不确定如何用最“Clojure”的方式表述。

0

评论由:alexmiller发表

似乎body的改动缺少一个其他的右括号?

您有: (def name (fn ((link: params ) body)+)
应该是: (def name (fn ((link: params
) body)+))

0

评论者:alex+import

嗨 @marc,有任何更新吗?非常希望能够得到这个更新!谢谢!

0
参考:https://clojure.atlassian.net/browse/CLJ-2211(由 marc 报告)
...