是否可以在 agda 中编写一个不终止的 Web 服务器?

Is it possible to write a non-terminating web server in agda?

other questions 的回答已经解释了所有 Agda 程序正在终止。

我的理解是,任何有效的 Adga 程序的终止都是由 Agda 的高级依赖类型系统管理的要求。这种严格的要求似乎可以消除许多错误。然而,禁止非终止程序似乎也会阻止该语言表达一些有用的程序。例如,服务器是一个程序,其中不终止的可能性是其功能的一个关键方面。

是否可以用 Agda 编写服务器?我认为在这种情况下,通过将服务器设置为最终在 10 亿年或更长时间后终止,实际上可以绕过非终止限制。但我想知道是否有一些类型系统的技巧可以允许 Agda 表达一些这样的非终止程序,也许只有那些达到某种静态封闭循环的程序。如果没有,那么理论上可以发明这样的把戏吗?

如果没有这种可能性,似乎 Agda 概念在它可以表达的有用程序集中基本上是有限的。

所有 Agda 程序需要总数。这意味着:

  • 递归程序必须终止
  • 核心递归程序必须高效

生产力意味着对过程的任何有限观察都需要在有限的时间内return得到答案。服务器将是一个核心递归程序,为用户提供一组他们可以发出的命令,return在有限的时间内做出响应,并(如果适用)提供下一组命令。