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

欢迎!请参阅关于页面以了解有关此信息的一些更多信息。

+3
规范
编辑

我正在尝试将可追溯性集成到我的规范中。
(我特别指的是 s/defs/fdef 块。

最初,我考虑使用元数据来实现这个目标。然而,遗憾的是,这是不可能的:下面的代码给了我一个语法错误...(《元数据只能应用于IMetas》。)

(require
    '[clojure.spec.alpha :as s])
(s/def
      ^{:rule "205.3i"
        :version "2020.06.01"}
      ::basic-land-type #{::forest ::island ::mountain ::plains ::swamp})

我能想到的另一种方法是在文件中将其作为“守护者”元素附加元数据(比如,一个 def

但这看起来相当丑陋...

(def
  ^{:rule "205.3i"
    :version "2020.06.01"}
  tracing-info "(see metadata)")

有人知道某种方法可以实现这个目标吗?

2 答案

+2

目前实际上并没有对所有规范类型实现此功能的方法,但这是与文档字符串支持最频繁的请求之一,因此我们将考虑在规范 2 中实现它。

目前最好的处理方法可能是创建自己的按规范名称键的辅助注册表,并使用它来保存元数据映射。


编辑
非常感谢您的快速回复,@alexmiller!
你知道这个方面的一个示例吗?_(或其他类似于你所描述的内容。)_
虽然我理解这个大致思路,但我不知道如何实现...
抱歉没有现成的。在这里,我所说的注册表仅仅是指一个包含映射的原子(这与规范注册表完全相同),从规范名称(关键字)到元数据。
不过还是谢谢,@alexmiller。我觉得我现在更能理解你的想法了。
...