Compiler construction agda编译器如何确定要编译的内容?

Compiler construction agda编译器如何确定要编译的内容?,compiler-construction,agda,Compiler Construction,Agda,在Coq中,逻辑世界(Prop)和计算世界(Set)中的内容是明确的。证明世界提供关于计算世界的保证,并且是唯一需要编译的世界 在Agda中,没有明显的区别,所以我想知道: Agda编译器如何决定需要编译的内容和需要留下的内容? 谢谢。更新:我在上添加了与新用户手册无关的文档 在Agda中,可以将函数参数标记为与点无关,这意味着该参数将只进行类型检查,而不会进行计算。例如,您可以定义排序列表,如下所示(从中): 证明头≤ 绑定的前面有一个点,因此它将被擦除(无论是在编译时还是在运行时) 除了显式

Coq
中,逻辑世界(Prop)和计算世界(Set)中的内容是明确的。证明世界提供关于计算世界的保证,并且是唯一需要编译的世界

在Agda中,没有明显的区别,所以我想知道:

Agda编译器如何决定需要编译的内容和需要留下的内容?


谢谢。

更新:我在上添加了与新用户手册无关的文档

在Agda中,可以将函数参数标记为与点无关,这意味着该参数将只进行类型检查,而不会进行计算。例如,您可以定义排序列表,如下所示(从中):

证明
头≤ 绑定的
前面有一个点,因此它将被擦除(无论是在编译时还是在运行时)


除了显式的无关注释外,Agda编译器还有许多优化功能,可以在没有任何用户干预的情况下删除未使用的参数,例如从中强制优化。

您可能希望使问题更加明确。非常感谢,这正是我所期望的答案。
  data SList (bound : ℕ) : Set where
    []    : SList bound
    scons : (head : ℕ) →
          .(head ≤ bound) →        -- note the dot!
          (tail : SList head) →
          SList bound