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