clojure.spec

    1热度

    1回答

    我在研究clojure.spec,并遇到以下: (s/def ::the-aughts (s/inst-in #inst "2000" #inst "2010")) 我想这可能#inst "2000"在2000年年初平均时间的实例,但我找不到,由谷歌,适当的文件描述的符号,和它背后的理念。 我还没有在我的Clojure教科书中学过。

    5热度

    1回答

    随着截屏视频和博客开始出现在Clojure 1.9的新clojure.spec功能中,越来越清楚clojure.spec能够执行很多风险缓解措施,而这些风险缓解措施以前由更“传统”的自动化测试库作为clojure.test,midje,speclj和test.check。 是否意图clojure.test的功能将基本上在clojure.spec中复制?如果您现在开始在Clojure 1.9+下开发

    3热度

    1回答

    我使用Clojure来实现(书面)标准文档。总的来说,我对Clojure允许我编写符合标准不同部分的代码感到满意。着眼于未来,我正在尝试为它编写一个clojure.spec。在文档中,他们使用命名字段定义各种结构化数据元素。然而,不同结构中的字段具有相同的名称,例如“红色”结构具有“值”字段,该字段是字符串,但“蓝色”结构具有“值”字段,该字段是整数。在编写规格时如何处理这个问题? (s/def

    39热度

    3回答

    所以,我深入潜入Clojure.Spec。 我偶然发现的一件事是,在哪里把我的规格。我看到三个选项: 全球SPEC文件 在大多数例子中,我发现网上,有一个很大的spec.clj文件时,被在主命名空间要求。它具有所有“数据类型”和功能的所有(s/def)和(s/fdef)。 临: 一个文件解决所有问题 魂斗罗: 此文件可以是大 单Responsibliy原理侵犯? 规格生产的命名空间 你可以把你的(

    8热度

    2回答

    我正在关注clojure.spec guide。我知道使用clojure.spec/keys时可以声明必需的和可选的属性。 我不明白什么是可选的。对我来说:选择不做任何事情。 (s/valid? (s/keys :req [:my/a]) {:my/a 1 :my/b 2}) ;=> true (s/valid? (s/keys :req [:my/a] :opt []) {:my/a 1 :

    8热度

    2回答

    写this answer后,我受到启发,尝试使用spec指定Clojure's destructuring language: (require '[clojure.spec :as s]) (s/def ::binding (s/or :sym ::sym :assoc ::assoc :seq ::seq)) (s/def ::sym (s/and simple-symbol? (co

    7热度

    1回答

    说我有以下规格: (s/def :person/age number?) (s/def :person/name string?) (s/def ::person (s/keys :req [:person/name :person/age])) 然后我从Datomic提取实体: (def person-entity (d/entity (d/db conn) [:person/name

    1热度

    1回答

    我与clojure.spec尝试,我想我会写一个宏来节省一些繁琐的打字:-) 我试图做到这一点: (defmacro nup [pns pname punit] `(s/def :~pns/name (s/and #(string? %) #(= % ~pname))) `(s/def :~pns/unit (s/and #(string? %) #(= % ~pun

    3热度

    1回答

    如果我定义了以下记录: (defrecord Person [name id]) 及以下: (s/def ::name string?) (s/def ::id int?) (s/def ::person (s/keys :req-un [::name ::id])) 我怎么能保证你不能创建不符合一个人到::人的规格?换句话说,下面应该抛出一个异常: (->Person "Fred"