33、隐式类型高阶语言中的类型错误切片技术

隐式类型高阶语言中的类型错误切片技术

在编程过程中,类型错误的定位一直是一个具有挑战性的问题,尤其是在隐式类型的高阶语言中。传统方法往往难以准确找到类型错误的位置,而一种新的类型错误切片方法为解决这一问题提供了新的思路。

1. 传统类型错误定位方法的不足

在隐式类型且具有 let - 多态性的高阶语言(如 Haskell、Miranda、O’Caml、Standard ML 等)中,解释类型错误一直是一个难题。以往的方法通常将类型错误的位置确定为某个特定的程序点或以此点为根的程序子树,但这些方法并不令人满意。

例如,有如下 SML 程序片段:

val f = fn x => fn y => let val w = x + 1 in w::y end

该程序定义了一个函数 f ,调用 (f 1 [2]) 应计算出列表 [2, 2] 。若程序员错误地写成:

val f = fn x => fn y => let val w = y + 1 in w::y end

当使用 W、M 或 UAE 类型推断算法来确定错误位置时,这些算法会遍历程序的抽象语法树,失败时会将当前访问的节点归咎为错误点。不同算法检查类型约束的急切程度不同,可能会在不同节点失败。

<
算法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值