关于 haskell:Fundeps 和 GADT:什么时候可以确定类型检查?

关于 haskell:Fundeps 和 GADT:什么时候可以确定类型检查?

Fundeps and GADTs: When is type checking decidable?

我正在阅读一篇关于 Haskell 以及 HList 是如何实现的研究论文,并且想知道所描述的技术何时可以确定,何时不能确定类型检查器。另外,因为你可以用 GADT 做类似的事情,所以我想知道 GADT 类型检查是否总是可确定的。

如果你有引用的话,我更喜欢引用,这样我就可以阅读/理解解释。

谢谢!


我相信 GADT 类型检查始终是可判定的;它的推论是不可判定的,因为它需要更高阶的统一。但是 GADT 类型检查器是您在例如中看到的证明检查器的受限形式。 Coq,构造函数在其中建立证明项。例如,将 lambda 演算嵌入 GADT 的经典示例为每个归约规则都有一个构造函数,所以如果你想找到一个术语的范式,你必须告诉它哪些构造函数可以帮你找到它。停止问题已转移到用户手中 :-)


您可能已经看过这个,但在 Microsoft 研究中有一系列关于这个问题的论文:类型检查论文。第一个描述了 Glasgow Haskell 编译器中实际使用的可判定算法。


推荐阅读

    查看linux类型命令?

    查看linux类型命令?,系统,信息,命令,状态,数据,数字,情况,地址,类型,文件,lin

    linux检查挂载命令?

    linux检查挂载命令?,设备,系统,信息,情况,状态,服务,软件,命令,磁盘,网络,lin

    linux删除类型命令?

    linux删除类型命令?,系统,档案,命令,文件,名称,环境,数据,不了,目录,文件夹,

    linux一般检查命令?

    linux一般检查命令?,网络,系统,检测,情况,工作,信息,命令,进程,时间,设备,lin

    linux命令格式描述?

    linux命令格式描述?,地址,图片,系统,工作,命令,信息,设备,百分比,名字,首次,l

    检查硬件linux命令?

    检查硬件linux命令?,信息,系统,第一,数据,设备,检测,命令,情况,灵活,实时,如

    查看linux库类型命令?

    查看linux库类型命令?,系统,工作,信息,状态,电脑,命令,工具,代码,地址,发行,

    linux网卡类型命令?

    linux网卡类型命令?,网络,系统,地址,信息,设备,状态,服务,名称,名字,网卡,如

    检查路由命令linux?

    检查路由命令linux?,网络,地址,系统,信息,工具,电脑,时间,通信,服务,命令,lin

    linux数据库检查命令?

    linux数据库检查命令?,服务,状态,地址,位置,系统,信息,命令,工作,情况,密码,

    linux分区检查命令是?

    linux分区检查命令是?,系统,设备,工具,管理,情况,信息,检测,分区,密码,单位,

    linux检查流量的命令?

    linux检查流量的命令?,工具,系统,实时,状态,网络,信息,数据,密码,地址,流量,l

    linux查看命令类型用?

    linux查看命令类型用?,信息,系统,情况,命令,实时,工作,设备,电脑,文件,类型,

    linux命令三种类型?

    linux命令三种类型?,工作,地址,系统,标准,时间,管理,命令,目录,信息,文件,lin

    linux检查更新命令是?

    linux检查更新命令是?,工作,软件,地址,系统,信息,管理,命令,目录,最新,标准,l

    命令检查linux版本?

    命令检查linux版本?,系统,地址,信息,发行,名称,电脑,版本,连续,工具,周期,在L

    linux命令描述中文?

    linux命令描述中文?,地址,系统,工作,信息,目录,命令,基础,工具,标准,文件,Lin

    linux内存检查命令?

    linux内存检查命令?,情况,系统,信息,工具,实时,分析,状态,内存,命令,总量,查

    linux下节点检查命令?

    linux下节点检查命令?,系统,信息,工作,名称,命令,地址,情况,文件,服务,第一,l