gpt4 book ai didi

clojure - Clojure 属性映射中的歧义

转载 作者:行者123 更新时间:2023-12-02 12:02:03 25 4
gpt4 key购买 nike

在 Clojure 特殊表单 ( http://clojure.org/special_forms ) 的文档中,:pre:post 的示例如下所示:

(defn constrained-sqr [x]
{:pre [(pos? x)]
:post [(> % 16), (< % 225)]}
(* x x))

Clojure 如何判断包含元数据的映射是否不是函数的定义?元数据不应该位于参数向量之前吗?根据 defn ( http://clojure.github.com/clojure/clojure.core-api.html#clojure.core/defn ) 的文档,语法为

(defn name doc-string? attr-map? [params*] body)

attr-map?参数向量之前。这不是更正确吗:

(defn constrained-sqr
{:pre [(pos? x)]
:post [(> % 16), (< % 225)]}
[x]
(* x x))

我应该提交错误报告还是我误读了此内容?

抱歉挑刺。

最佳答案

映射必须遵循参数向量,因为它取决于参数。并且您可以拥有多个具有不同参数的函数体。 disambiguation非常简单: map 是主体中唯一的东西吗?它是返回值。如果后面还有别的东西, map 就会被扔掉。然后将其添加到元数据中。这是一个非常直接且非常简单的启发式方法,不应与任何生产代码发生冲突。

关于clojure - Clojure 属性映射中的歧义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3996325/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com