在编写校样时,我注意到Agda的自动校对搜索经常找不到对我来说显而易见的解决方案。不幸的是,提出一个小例子,说明问题似乎很难,所以我试着描述最常见的模式。
-m
添加到洞中以使Agda查看模块范围。我可以将该标志设为默认值吗?会有什么缺点?-m
,Agda也不会考虑let
或where
子句中引入的函数参数或符号。简单地尝试所有这些都有问题吗?let
或where
子句中引入的符号。为什么?使用auto更有效的其他习惯可以做什么?
答案 0 :(得分:1)
Agda的自动校对搜索硬编码到编译器中。这让它很快, 但限制了您可以执行的自定义量。一种替代方法 将使用Agda实现类似的证明搜索程序 反思机制。随着最近增强版的反射使用 TC monad, 您不再需要实施自己的统一程序。
卡洛斯 Tome一直致力于重新实现这些想法(查看他的代码 https://github.com/carlostome/AutoInAgda)。他一直在研究几个 尝试使用上下文信息的版本,打印调试信息, 希望这有帮助!