诸如函数的内存使用率之类的属性可以用依赖类型的语言表示吗?


11

假设人们想对代码的属性进行推理,而不是考虑诸如整体性和功能纯度之类的东西-人们还关心内存的消耗或函数的算法复杂性。可以通过依赖类型和效果系统来完成吗?


2
在此视频中, Brian McKenna提供了将时间复杂度编码为类型的示例。
安东·特鲁诺夫

Answers:


8

是的,它可以。尽管从概念上讲并不是那么困难,但尚未对其进行太多研究。该领域的一方面是成本语义,例如Guy Blelloch所做的研究。

在视频中,安东(Anton)提到了丹尼尔森(Daniellson)在纯功能数据结构的轻型半形式时间复杂度分析中的工作。实际上,这确实使用monad来承担每次操作的成本。在语义级别上,类似的monad用于具有归纳类型的功能语言的指称成本语义中。这是2016年的一篇论文,在Coq(运行时内部验证的Coq库)中做了类似的事情。

NuPRL的人们也一直对做这样的事情感兴趣。在“ 构造类型理论中表达计算复杂性”中,这基本上相当于对结构化操作语义进行计算。更有趣的是,您可以将语言语义反映到语言中。朴素的计算类型理论的最后一节第12节中的示例说明并讨论了这种情况。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.