当我编译使用标准库的Agda程序时,编译器会花很长时间打印出如下行:
Skipping Relation.Binary.Consequences (/home/owen/install/lib-0.6/src/Relation/Binary/Consequences.agdai).
Skipping Relation.Binary.Indexed.Core (/home/owen/install/lib-0.6/src/Relation/Binary/Indexed/Core.agdai).
Skipping Relation.Binary (/home/owen/install/lib-0.6/src/Relation/Binary.agdai).
我猜测它安全“跳过”它们的原因是它们已经被编译(目录中已经存在.agdai文件)。但它仍然花费大量时间来跳过它们,并且编译需要花费一分多钟。
有没有办法在每次编译时避免所有这些额外的工作?
答案 0 :(得分:1)
Agda必须将至少一些.agdai文件加载到内存中才能检查自己的代码,这可能就是为什么即使跳过检查这些模块,它仍然需要一些时间。
答案 1 :(得分:0)
Agda和其他类似的软件系统(如coq)提供交互式界面,通常通过安装在emacs中的Proof General。
模块化编译在其他环境中有效,因为编程语言往往依赖于对外部符号的浅层名称检查,如果它们完全检查的话。 Agda是一个证明系统,所以如果要完成它的工作,它必须每次都从头开始并深入验证整个证明。