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

欢迎!请查看关于页面以了解更多关于如何使用本站的信息。

0
core.typed

我将 core.typed 应用于一个项目,该项目管理较大型的哈希表序列。我遇到了两个问题
1. 错误输出太大,无法由人类解释(每个错误4k)
2. 报告的错误似乎是不正确的,因为期望的类型和实际类型似乎匹配。

我是通过编写一个比较期望类型和实际类型的功能得出这个结论的。这个函数也包括在内,它可能是如何为大型哈希表上的错误生成更紧凑和可读输出的一个示例。

longOutput.clj 包含失败的功能(derive-sms_msg-fmt-fail ..)和几乎相同的功能(derive-sms_msg-fmt ..),该功能通过检查命名空间(check-ns)。

该文件还包括函数(show-error),它打印出复制类型错误,并随后分析导出的类型与期望类型。导出的类型是期望类型和基于包含可选键的一些派生的类型的并集。所以在我看来,这个并集是期望类型的子类型,报告的错误是不正确的。

在文件 show-error.output 中包括了错误分析的一个示例。

3 条回答

0

评论由:cvkemenade 发布

PS:我想象当前的(show-error ..)可以作为更紧凑错误消息的大型哈希表的基础(使用输出长度作为是否使用当前错误格式或差异分析以产生最紧凑错误报告的依据)。

PS:我坚信静态类型检查的优势巨大。但是由于当前的错误消息,由于大量错误输出,几乎无法迁移涉及大型哈希表的项目。

0

评论由:ambrosebs

嗨,Cees,

感谢你详细的报告,它很有帮助。我会调查此事。

0
参考:[https://clojure.atlassian.net/browse/CTYP-102](https://clojure.atlassian.net/browse/CTYP-102)(由cvkemenade报告)
...