2024 Clojure状态调查!中分享你的想法。

欢迎!请参阅关于页面以了解更多此网站的工作方式。

0 投票
文档
defn的文档字符串为:

bq. 与`(def name (fn [params* ] exprs*))`或`(def name (fn ([params* ] exprs*)+)`相同,可以添加任何文档字符串或属性到var元数据中。预后条件映射定义了一个包含可选键:pre和:post的映射,它们包含预或后条件集合。

参数列表为

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

有两个问题使我对这个文档字符串难以理解

1. 文档字符串没有提及attr-map? - 我需要在文档中跳转了一段时间,才将attr-map?与"添加到var元数据中的任何 [...] 属性"联系起来。
2. 文档字符串引用了exprs*,但是参数列表中称为body。

5 答案

0 投票
by

评论由:alexmiller

欢迎提交补丁,希望更改尽可能小。

0 投票
by

评论:marc

我附上了补丁来解决两个问题

  • 将'exprs**'改为'body'以与参数列表匹配。
  • 在指多参数形式时,将'body+)'改为'body)+'

我没有解决关于attr-map的"任何属性"的问题,不确定如何用最符合"Clojure风格"的方式表达。

0 投票

评论由:alexmiller

看起来正文更改缺少一个尾随的右括号?

您有:(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 报告)
...