×

Skalpel:标准ML的基于约束的类型错误切片器。 (英语) Zbl 1356.68039号

摘要:具有类型推理算法的语言的编译器通常会产生令人困惑的类型错误消息,并给出一个错误位置,该位置有时离错误的真实位置很远。解决这个问题的尝试通常(1)没有包括构成类型错误的多个程序点;(2) 报告与用户程序中任何位置都不对应的树片段;(3)给出错误的类型信息/诊断,这可能会造成高度混淆。我们介绍了Skalpel,一种类型错误切片工具,它通过向程序员提供与类型错误有关的所有信息来解决这些问题,从而大大帮助诊断和修复类型错误。Skalpel依赖于一个简单通用的约束系统、一个在程序大小上呈线性的复杂约束生成器和一个正在终止的约束求解器。Skalpel的约束系统可以优雅高效地处理复杂的特性,如SML的打开。我们还表明,Skalpel工具足够通用,不仅可以处理一个源代码文件和一个单一错误,而且可以突出显示所有受影响文件中错误的所有可能位置,并生成所有导致错误的多个程序片。

MSC公司:

68N20型 编译与解释理论
PDF格式BibTeX公司 XML格式引用
全文: DOI程序 链接

参考文献:

[1] Andrew W.Appel,《标准ML的批判》,J.Funct。程序。,3, 4, 391-429 (1993)
[2] 迈克·比文;瑞安·斯坦西弗,《解释多态语言中的类型错误》,ACM Lett。程序。语言系统。,2、1-4、17-30(1993年)
[3] Blume,Matthias,层次模块化和互调优化(1997年11月),普林斯顿大学,博士论文
[4] Blume,Matthias,标准ML的依赖性分析,ACM Trans。程序。语言系统。,21, 4, 790-812 (1999)
[5] 纳比尔·布斯塔尼;Jurriaan Hage,《改进通用Java的类型错误消息》(PEPM(2009),ACM),131-140·Zbl 1256.68026号
[6] 纳比尔·布斯塔尼;Hage,Jurriaan,针对类型错误的通用Java程序的纠正提示,(PEPM(2010),ACM),5-14
[7] Braßel,Bernd,TypeHope-你的打字错误是有希望的,(第16届国际研讨会,第16届世界研讨会,IFL 2004。第十六届国际研讨会。第16届国际研讨会,IFL 2004,Lect。注释计算。科学。,第3474卷(2005),施普林格),185-198
[8] 陈胜;马丁·埃尔维格(Martin Erwig);卡尔·斯梅尔策(Karl Smeltzer),《让我们听听双方的意见:关于合并类型错误报告工具》(VL/HCC 2014(2014),IEEE),145-152
[9] Chitil,Olaf,类型的组合解释和类型错误的算法调试,(ICFP'01:第六届ACM SIGPLAN国际函数编程会议论文集(2001),ACM:美国纽约州纽约市ACM),193-204·Zbl 1323.68103号
[10] 奥拉夫·奇蒂尔;Frank Huch;Simon,Axel,Typeview:理解类型错误的工具,(第十二届函数语言实现国际研讨会论文集(2000),Aachner Informatik-Berichte),63-69
[11] 多米尼克·克莱门特;蒂埃里·德斯佩鲁;卡恩(Kahn)、吉尔斯(Gilles);Despeyroux,Joölle,《一种简单的应用语言:mini-ML》,(《1986年美国计算机学会LISP和函数编程会议论文集》,《1986年ACM LISP与函数编程会议文献集》,LFP'86(1986),美国计算机学会:美国纽约州纽约市ACM),13-27
[12] 路易斯·达马斯;罗宾·米尔纳,功能程序的主要类型模式,(POPL82(1982),ACM:美国纽约州纽约市ACM),207-212
[13] Duggan,Dominic,正确的类型解释,(ACM SIGPLAN ML研讨会(1998)),49-58
[14] 多米尼克·达根;Frederick Bent,解释类型推断,科学。计算。程序。,27, 1, 37-83 (1996) ·Zbl 0851.68015号
[15] 约翰·菲尔德(John Field);Tip,Frank,术语重写系统中的动态依赖及其在程序切片中的应用,(第六届编程语言实现和逻辑编程国际研讨会论文集(1994),Springer-Verlag:Springer-Verlag London,UK),415-431
[16] 约翰·菲尔德(John Field);Tip,Frank,术语重写系统中的动态依赖性及其在程序切片中的应用,Inf.Softw。技术。,40, 11-12, 609-636 (1998)
[17] Gast,Holger,通过数据流解释ML类型错误,(第16届国际研讨会,第16届世界研讨会,IFL 2004。第十六届国际研讨会。第16届国际研讨会,IFL 2004,Lect。注释计算。科学。,第3474卷(2005),施普林格),72-89·Zbl 1119.68333号
[18] 约根·古斯塔夫森;Sveningsson,Josef,约束抽象,(PADO.PADO,Lect.Notes Compute.Sci.,第2053卷(2001),Springer),63-83·Zbl 0984.68035号
[19] 哈克,克里斯蒂安;Wells,J.B.,隐式类型高阶语言中的类型错误切片,(ESOP.ESOP,Lect.Notes Compute.Sci.,第2618卷(2003),Springer),284-301·Zbl 1032.68041号
[20] 哈克,克里斯蒂安;Wells,J.B.,隐式类型高阶语言中的类型错误切片,科学。计算。程序。,50, 1-3, 189-224 (2004) ·Zbl 1091.68017号
[21] 尤里安·哈格;Heeren,Bastiaan,《有序类型约束:结构化方法》(2005),乌得勒支大学信息与计算科学研究所,技术报告·Zbl 1315.68050号
[22] 尤里安·黑格;Bastiaan Heeren,《类型错误发现和恢复的启发式》,第18届国际交响乐团,IFL 2006。第18届国际交响乐团。。第18届国际交响乐团。,IFL 2006,Lect。注释计算。科学。,第4449卷(2007),施普林格),199-216
[23] 尤里安·黑格;Heeren,Bastiaan,解决类型和效果系统约束的策略,电子。理论注释。计算。科学。,236, 163-183 (2009)
[24] Robert Harper,《标准ML编程》(2009),工作草案
[25] Heeren,Bastiaan J.,《高质量类型错误消息》(2005年9月),乌得勒支大学:荷兰乌得勒支大学,博士论文
[26] 海仁,巴斯蒂安;Hage,Jurrian,《类型类指令》,(第七国际交响乐团,第七国际交流团,PADL 2005)。第七届国际交响乐团。。第七届国际交响乐团。,PADL 2005年,Lect。注释计算。科学。,第3350卷(2005),施普林格),253-267
[27] 海仁,巴斯蒂安;尤里安·黑格;Swierstra,S.Doaitse,《氦中基于约束的类型推断》,(Silaghi,M.-C.;Zanker,M.,《约束编程即时应用研讨会论文集》,科克(2003年9月),59-80·Zbl 1315.68050号
[28] 海仁,巴斯蒂安;杰林,约翰;Swierstra,S.Doaitse;Alcocer,Pablo Azero,《改进函数语言中的类型错误消息》(2002),乌得勒支大学,技术报告
[29] Jif(2016)
[30] Lee,Oukseh;Yi,Kwangkeun,关于民俗小多态类型推理算法的证明,ACM Trans。程序。语言系统。,20,4707-723(1998年7月)
[31] 本杰明·勒纳。;弗劳尔,马修;Dan Grossman;Chambers,Craig,《搜索类型错误消息》(ACM SIGPLAN 2007 Conf.PLDI(2007),ACM)
[32] 本杰明·勒纳(Benjamin Lerner);Dan Grossman;Chambers,Craig,SEMINAL:搜索ML类型的错误消息,(ACM关于ML的研讨会(2006),ACM),63-73
[33] Bruce J.McAdam,《关于类型推断中替换的统一》,(第十届国际研讨会,第十届世界研讨会,IFL’98。第十届国际研讨会。第十届国际研讨会,IFL’98,Lect。注释计算。科学。,第1595卷(1999),施普林格),137-152
[34] 罗宾·米尔纳(Robin Milner);托夫特、麦兹;罗伯特·哈珀;David MacQueen,《标准ML的定义(修订版)》(1998年),麻省理工学院出版社:麻省理学学院出版社,55 Hayward Street,Cambridge,MA 02142-1493,USA
[35] MLton编译器(2015年5月21日)
[36] Müller,Martin,基于约束的ML-多态重铸(扩展摘要)(1994年),技术报告,第八届国际统一研讨会
[37] 马提亚斯·纽鲍尔;Thiemann,Peter,判别和类型定位类型错误的来源,(第8届ACM SIGPLAN国际会议。第8届AC M SIGPLA国际会议,ICFP 2003(2003),ACM),15-26·兹比尔1315.68056
[38] 马丁·奥德斯基(Martin Odersky);马丁·苏尔兹曼(Martin Sulzmann);Wehr,Martin,带约束类型的类型推理,理论与实践。对象系统。,5, 1, 35-55 (1999)
[39] 茨沃尼米尔·帕夫利诺维奇;金,蒂姆;Wies,Thomas,《寻找最小类型错误源》(OOPSLA 2014(2014),ACM),525-542
[40] Pirie,John,《Skalpel的新发展:解释类型和效果系统中错误的类型错误切片方法》(2014),Heriot-Watt大学,网址:
[41] Plociniczak,H。;米勒,H。;Odersky,M.,通过可定制的类型反馈改进人工编译器交互(2015),提交中
[42] PolyML编译器(2014年1月20日)
[43] 弗朗索瓦·波蒂埃,《ML类型推断的现代视角:旧技术和最新发展》(2005年9月),APPSEM暑期学校讲稿
[44] 弗朗索瓦·波蒂埃;Rémy,Didier,ML类型推理的本质,(Pierce,Benjamin C.,类型和编程语言高级主题(2005),麻省理工出版社),389-489,第10章
[45] Rahli,Vincent,《交叉类型的调查:λ演算中的汇流和扩展语义,以及类型错误切片方法》(2010),Heriot-Watt大学,上次访问时间:2012年7月16日,星期一
[46] Schilling,Thomas,无约束类型错误切片,(TFP 2011。2011年TFP,Lect。注释计算。科学。,第7193卷(2011),施普林格),1-16
[47] 乔塞普·席尔瓦(Josep Silva);Chitil,Olaf,结合算法调试和程序切片,(PPDP 2006(2006),ACM),157-166
[48] Skalpel项目主页(2012年7月13日)
[49] Skalpel项目(2010年)
[50] SML/NJ编译器(2012年7月17日)
[51] Peter J.Stuckey。;马丁·苏尔兹曼(Martin Sulzmann);Jeremy Wazny,《Haskell中的交互式调试》(Haskell'03:2003年ACM SIGPLAN Haskells研讨会论文集(2003),ACM:美国纽约州纽约市ACM),72-83
[52] Peter J.Stuckey。;马丁·苏尔兹曼(Martin Sulzmann);杰里米·瓦兹尼(Jeremy Wazny),《改进类型错误诊断》(Haskell’04:2004年ACM SIGPLAN研讨会会议记录,哈斯克尔(2004),ACM:美国纽约州纽约市ACM),80-91
[53] Peter J.Stuckey。;马丁·苏尔兹曼(Martin Sulzmann);杰里米·瓦兹尼(Jeremy Wazny),《通过约束推理进行类型处理》(第四届亚洲交响乐团,2006年)。第四届亚洲交响乐团。。第四届亚洲交响乐团。,2006年APLAS,Lect。注释计算。科学。,第4279卷(2006),施普林格),1-25·Zbl 1168.68366号
[54] Sulzmann,Martin Franz,《带有约束的Hindley/Millner型系统的一般框架》(2000),耶鲁大学:耶鲁大学纽黑文分校,美国康涅狄格州,董事Paul Hudak
[55] 马丁·苏尔兹曼;马丁·米勒;Zenger,Christoph,Hindley/Milner型约束形式系统(1999),技术报告
[56] 小费,弗兰克;Dinesh,T.B.,一种基于切片的类型错误定位方法,ACM Trans。柔和。工程方法。,10, 1, 5-55 (2001)
[57] 对岛,Kanae;Asai,Kenichi,《嵌入式调试器》(IFL 2012)。IFL 2012,法律。注释计算。科学。,第8241卷(2012),施普林格),190-206
[58] Vytiniotis,Dimitrios;西蒙·琼斯(Simon L.Peyton Jones)。;汤姆·施里弗斯;Sulzmann,Martin,OutsideIn(X)模块化类型推断与局部假设,J.Funct。程序。,21, 4-5, 333-412 (2011) ·Zbl 1262.68034号
[59] Wand,Mitchell,《找出类型错误的来源》,(第13届ACM SIGACT-SIGPLAN交响乐团,第13届AMM SIGACT SIGPLAN交响乐会,POPL'86(1986),ACM:美国纽约州纽约市ACM),38-43
[60] Wazny,Jeremy,《Hindley/Milner的类型推断和类型错误诊断及其扩展》(2006),墨尔本大学:澳大利亚墨尔本州立大学,博士论文
[61] 杰罗·韦杰尔斯(Jeroen Weijers);尤里安·黑格;Holdermans,Stefan,高阶多态语言的安全类型错误诊断,(PEPM 2013(2013),ACM),3-12
[62] 杰罗·韦杰尔斯(Jeroen Weijers);尤里安·黑格;Holdermans,Stefan,高阶多态语言的安全类型错误诊断,科学。计算。程序。,95, 200-218 (2014)
[63] Yang,Jun,通过寻找类型冲突的来源来解释类型错误,(SFP'99:第一届苏格兰函数式编程研讨会论文选集(2000年),Intellect Books:Intellect Books Exeter,UK),59-67
[64] 杨军;格雷格·迈克尔森;Phil Trinder,解释多态性类型,计算机。J.,45,4,436-452(2002)·Zbl 1037.68019号
[65] 杨军;格雷格·迈克尔森;菲尔·特林德;Wells,J.B.,《改进型错误报告》,(第十二届国际研讨会,第十二届世界研讨会,IFL 2000。第十二届国际研讨会。第十二届国际研讨会,IFL 2000,Lect。注释计算。科学。,2011(2001)卷,施普林格),71-86
[66] 张丹峰;Myers,Andrew C.,《走向静态误差的一般诊断》(POPL’14(2014),ACM),569-582·Zbl 1284.68141号
[67] 张丹凤;安德鲁·迈尔斯(Andrew C.Myers)。;Vytiniotis,Dimitrios;Peyton-Jones,Simon,用类诊断类型错误(PLDI’2015(2015)),在线阅读
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。