我在一个项目中应用 core.typed 处理相当大的哈希表序列。我遇到了两个问题
1. 错误输出太大,无法由人类解释(每个错误 4k)
2. 报告的错误似乎是不正确的,因为预期类型和实际类型似乎匹配。
我通过编写一个比较预期类型和实际类型的函数得出这个结论。这个函数也包含了,可能是一个如何为大哈希表上的错误生产更紧凑和可读的输出的例子。
longOutput.clj 包含失败的函数(derive-sms_msg-fmt-fail ..)和几乎相似的成功函数(derive-sms_msg-fmt ..)(check-ns)。
该文件还包含函数(show-error),该函数打印出类型错误的一个副本,然后与预期类型分析推导类型。推导的类型是预期类型和一些基于包含可选键的派生类型的并集。所以我看到的并集是预期类型的子类型,报告的错误是不正确的。
在文件的 show-error.output 中包括了一个错误分析的例子。