请在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 (由cvkemenade报告)
...