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报告)
...