×

基于redex跟踪的惰性函数程序的动态切片。 (英语) 兹比尔1192.68139

摘要:跟踪计算是一种广泛使用的程序调试方法。然而,懒惰的语言对跟踪技术提出了新的要求,因为跟踪计算的实际轨迹通常是无用的。通常,惰性语言的跟踪程序依赖于redex trail的构造,这是一个存储计算中执行的减少的图。虽然跟踪为定位错误提供了重要帮助,但任务仍然很复杂。命令式程序的一种众所周知的调试技术是基于动态切片的,动态切片是一种查找影响特定程序输入值计算的程序语句的方法。在这项工作中,我们介绍了一种在一阶惰性函数语言中进行动态切片的新技术。我们的技术不是从头开始,而是依赖于(稍微扩展)redex轨迹。我们提供了动态切片的概念,并介绍了一种从计算的redex轨迹计算动态切片的方法。我们还概述了处理函数逻辑语言的技术扩展。我们的建议的一个明显优点是,可以通过适度的实现工作来增强现有跟踪程序的切片功能,因为相同的数据结构(redex trail)可以用于跟踪和切片。

MSC公司:

68甲18 函数编程和lambda演算
PDF格式BibTeX公司 XML格式引用
全文: DOI程序 链接

参考文献:

[1] Albert,E.,Hanus,M.,Huch,F.,Olvier,J.,Vidal,G.:声明性多参数语言的操作语义。J.塞姆。计算。40(1), 795–829 (2005) ·Zbl 1129.68042号 ·doi:10.1016/j.jsc.2004.01.001
[2] Biswas,S.:需求驱动的基于集合的分析。In:程序。第24届ACM交响乐团。《编程语言原理》(POPL'97),第372-385页。ACM出版社,纽约(1997)
[3] Biswas,S.:高阶编程语言中的动态切片。宾夕法尼亚大学CIS系博士论文(1997年)
[4] Braßel,B.,Hanus,M.,Huch,F.,Vidal,G.:跟踪声明性多参数程序的语义。In:程序。第六届国际声明性编程原则与实践大会(PPDP'04),第179-190页。ACM出版社,纽约(2004)
[5] Cheda,D.,Silva,J.,Vidal,G.:重写系统的静态切片。In:程序。第15届函数和(约束)逻辑编程国际研讨会(WFLP 2006)。《理论计算机科学电子笔记》,第177卷,第123-136页(2007年)·Zbl 1279.68051号
[6] Chitil,O.:跟踪的语义。摘自:第十三届函数式语言实现国际研讨会(IFL 2001),第249-254页。爱立信计算机科学实验室(2001)
[7] Chitil,O.:基于源代码的痕迹勘探。摘自:第16届函数式语言实施国际研讨会(IFL 2004)。LNCS,第3474卷,第126-141页。柏林施普林格出版社(2005)
[8] Ferrante,J.,Ottenstein,K.,Warren,J.:程序依赖图及其在优化中的应用。ACM事务处理。程序。语言系统。9(3), 319–349 (1987) ·Zbl 0623.68012号 ·doi:10.1145/24039.24041
[9] Gill,A.:通过观察中间数据结构调试Haskell。电子。注释Theor。计算。科学。41(1). 程序。第四届Haskell研讨会(2000年)
[10] Hallgren,T.:来自编程项目的Haskell工具。In:程序。ACM Haskell研讨会(Haskell'03),第103–106页。ACM出版社,纽约(2003)
[11] Hanus,M.:函数和逻辑编程的统一计算模型。In:程序。第24届ACM交响乐团。《程序设计语言原理》(POPL’97),第80-93页。ACM出版社,纽约(1997)
[12] Hanus,M.:Curry:一种集成函数逻辑语言。网址:http://www.informatik.uni-kiel.de/\(\sim\)咖喱/(2000)
[13] Hanus,M.,Prehofer,C.:定义树的高阶收缩。J.功能。程序。9(1), 33–75 (1999) ·Zbl 0926.68028号 ·网址:10.1017/S0956796899003330
[14] Korel,B.,Laski,J.:动态程序切片。信息处理。莱特。29(3), 155–163 (1988) ·Zbl 0656.68018号 ·doi:10.1016/0020-0190(88)90054-3
[15] Kuck,D.,Kuhn,R.,Padua,D.,Leasure,B.,Wolfe,M.:依赖图和编译器优化。In:程序。第八交响曲。关于程序设计语言原理(POPL'81),SIGPLAN通知,第207–218页(1981年)
[16] Liu,Y.,Stoller,S.:消除递归数据上的死代码。科学。计算。程序。47221-242(2003年)·Zbl 1047.68070号 ·doi:10.1016/S0167-6423(02)00134-X
[17] López-Fraguas,F.,Sánchez-Hernández,J.:TOY:一个多参数声明系统。In:程序。第十届国际重写技术与应用大会(RTA'99)。LNCS,第1631卷,第244–247页。柏林施普林格(1999)
[18] Nilsson,H.,Sparud,J.:评估依赖树是惰性功能调试的基础。自动。柔和。工程4(2),121-150(1997)·doi:10.1023/A:1008681016679
[19] Ochoa,C.、Silva,J.、Vidal,G.:基于赎回轨迹的动态切片。In:程序。ACM SIGPLAN 2004年部分评估和程序操作研讨会(PEPM’04),第123–134页。ACM出版社,纽约(2004)·Zbl 1192.68139号
[20] Peyton Jones,S.(编辑):Haskell 98语言和库。修订报告。剑桥大学出版社,剑桥(2003)·Zbl 1067.68041号
[21] Pope,B.:Haskell的声明式调试器。澳大利亚墨尔本大学博士论文(2006年)
[22] Pope,B.,Naish,L.:调试Haskell 98的程序转换。In:程序。第26届澳大利亚计算机科学会议(ACSC 2003)。信息技术研究与实践会议,第16卷,第227-236页。ACS,华盛顿(2003)
[23] Reps,T.,Turnidge,T.:通过程序切片实现程序专业化。收录:Danvy,O.,Glück,R.,Thiemann,P.(编辑)部分评估。达格斯图尔城堡,德国,1996年2月。LNCS,第1110卷,第409-429页。施普林格,柏林(1996)
[24] 罗德里格斯,N.,巴博萨,L.:通过计算划分函数程序。In:程序。达格斯图尔超越节目切片研讨会。研讨会编号:05451,Schloss Dagstuhl(2005)
[25] Sparud,J.,Runciman,C.:使用redex跟踪跟踪惰性函数计算。In:程序。第九届国际交响乐团。《编程语言、实现、逻辑和程序》(PLILP’97)。LNCS,第1292卷,第291-308页。柏林施普林格(1997)
[26] Tip,F.:程序切片技术综述。J.项目。第3卷,第121-189页(1995年)
[27] Vidal,G.:基于部分求值的多参数声明性程序的前向切片。In:基于逻辑的程序综合与转换(2002年第12届国际研讨会LOPSTR修订和精选论文)。LNCS,第2664卷,第219-237页。柏林施普林格出版社(2003)
[28] Wallace,M.,Chitil,O.,Brehm,T.,Runciman,C.:Haskell的多视图跟踪:一顶新帽子。In:程序。2001年ACM SIGPLAN Haskell研讨会。乌得勒支大学UU-CS-2001-23(2001)·Zbl 0977.68818号
[29] Weiser,M.:程序切片。IEEE传输。柔和。工程10(4),352–357(1984)·Zbl 0552.68004号 ·doi:10.1109/TSE.1984.5010248
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。