Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Types 类型在运行时之前被擦除_Types_Compilation_Type Erasure_Agda_Type Theory - Fatal编程技术网

Types 类型在运行时之前被擦除

Types 类型在运行时之前被擦除,types,compilation,type-erasure,agda,type-theory,Types,Compilation,Type Erasure,Agda,Type Theory,我确信在Haskell中,类型总是在运行时之前被擦除。Agda的情况会怎样 依赖类型信息是否已传递到运行时 什么运行时?至少有四个后端:面向GHC(称为MAlonzo)、UHC、Epic和JavaScript的后端。可以在中找到一些初始详细信息:您可以阅读Epic后端如何擦除那里的类型或本章(“3.3擦除”一章)。简而言之,Epic和UHC后端擦除完全应用的函数接收的所有类型,但不执行完全擦除,因为它可以更改程序的语义(引自关于UHC后端的文章): 类型翻译 其余的术语第∏,集合和级别为 仅对类

我确信在Haskell中,类型总是在运行时之前被擦除。Agda的情况会怎样


依赖类型信息是否已传递到运行时

什么运行时?至少有四个后端:面向GHC(称为MAlonzo)、UHC、Epic和JavaScript的后端。可以在中找到一些初始详细信息:您可以阅读Epic后端如何擦除那里的类型或本章(“3.3擦除”一章)。简而言之,Epic和UHC后端擦除完全应用的函数接收的所有类型,但不执行完全擦除,因为它可以更改程序的语义(引自关于UHC后端的文章):

类型翻译

其余的术语
第∏
集合
级别
为 仅对类型检查有效。在Agda中,
Set
级别
无法检查或模式匹配。随着Agda的执行 不可能观察到这些类型的任何值,它们不能 影响运行时语义。因此,执行程序是安全的 用单位值替换所有出现的此类值

人们也可能会试图完全删除这些元素的任何值 友善的这可能会潜在地改变已翻译文本的语义 节目。Agda不计算lambdas下的表达式;滴水 采用类型表达式的lambda抽象可以删除 评估模块lambdas。在中可以部分删除类型 好办法。例如,饱和函数应用程序总是可以 以这种方式进行优化。更详细地描述此类类型何时出现 可以在Letouzey以前的工作中找到完全擦除的


我不知道阿格达会做什么,但伊德里斯尽可能地扔掉。我不确定Agda的情况,但我想说的是,尽可能多地做这件事绝对是件好事。