gpt4 book ai didi

clojure - 是否有 Clojure 编译时工具来检查记录或类型是否实际实现了它声称的协议(protocol)?

转载 作者:行者123 更新时间:2023-12-02 21:30:05 39 4
gpt4 key购买 nike

似乎 Clojure 编译器默认不执行此操作: Does the Clojure compiler check if records and types implement protocols?

有任何 Lein 插件可以做到这一点吗?

最佳答案

令人惊叹的core.typed引入了“Clojure 的可选类型系统”,如您在其 official website 中看到的那样。

具体来说,您可能想使用他们自己的 defprotocol 宏 ( from core.typed wiki ):

Protocol definitions should use clojure.core.typed/defprotocol whose syntax is reminiscent of defprotocol and typed fn:

(defprotocol IUnifyWithLVar
(unify-with-lvar [v u :- LVar s :- ISubstitutions] :- (U ISubstitutions Fail)))

Polymorphic protocols are supported:

(defprotocol [a b] Lens
(-fetch [l x :- a] :- b)
(-putback [l x :- a v :- b] :- a))

一次installed ,您可以通过 leiningen 使用 lein typed check 运行它。明显的缺点是您必须对代码进行注释。这是通过使用静态类型检查来提高代码安全性所付出的成本。

您可能还对函数 satisfies? 感兴趣,和instance? .

关于clojure - 是否有 Clojure 编译时工具来检查记录或类型是否实际实现了它声称的协议(protocol)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32027613/

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