【发布时间】:2010-10-22 11:27:11
【问题描述】:
在 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))
我应该提交错误报告还是我误读了这个?
对不起,挑剔。
【问题讨论】:
-
attr-map 与 prepost-map 不同。这在多参数函数中更有意义,其中前置条件可能因一个参数而异。 attr-map 元数据出现在函数被拆分为单独的 arities 之前,因此元数据同样适用于所有不同的 arities。
标签: clojure