×

效果处理程序的连续传递样式。 (英语) Zbl 1441.68017号

Miller,Dale(编辑),第二届计算和演绎形式结构国际会议。FSCD 2017,英国牛津,2017年9月3-9日。诉讼程序。Wadern:达格斯图尔宫——莱布尼茨Zentrum für Informatik。LIPIcs–莱布尼茨国际程序。通知。84,第18条,第19页(2017年)。
摘要:我们使用Hillerström和Lindley的行类型细粒度调用-值演算作为源语言,为Plotkin和Pretnar的效果处理程序提供了连续传递样式(CPS)翻译。处理程序的CPS翻译在理论上很有趣,可以解释处理程序的语义,还提供了一种实用的实现技术,该技术不需要在目标语言的运行时中提供特殊支持。
我们首先将一阶CPS转换为非类型化lambda演算,该演算将一个continuation堆栈和处理程序作为一系列参数进行管理。然后,我们首先对初始CPS翻译进行细化,将其取消关联,以生成适当的尾递归翻译,然后将其设置为高阶,以在翻译时收缩管理性兑换。我们证明了高阶CPS转换模拟了效果处理程序的简化。我们已经实现了高阶CPS转换,作为Links编程语言的JavaScript后端。
有关整个系列,请参见[Zbl 1372.68017号].

MSC公司:

68甲18 函数编程和lambda演算
03B40型 组合逻辑与lambda演算
第68季度55 计算理论中的语义学
PDF格式BibTeX公司 XML格式引用
全文: 内政部

参考文献:

[2] 安德鲁·W·阿佩尔。{\it用续篇编译}。剑桥大学出版社,1992年。
[3] Andrej Bauer和Matija Pretnar。使用代数效果和处理程序进行编程。{it J.}{it Log.Algebr.Meth.Program.},84(1):108-1232015·Zbl 1304.68025号
[4] 伯纳德·贝尔托米厄(Bernard Berthomieu)和卡米尔·勒·莫尼耶斯·德·萨加赞(Camille le Moniès de Sagazan)。标记类型的演算,以及处理语言的应用程序。1995年,{it程序分析类型研讨会}。
[5] 埃德温·布雷迪。具有代数效果和依赖类型的编程和推理。在{\it ICFP}中,第133-144页。ACM,2013年·Zbl 1323.68097号
[6] 埃兹拉·库珀(Ezra Cooper)、萨姆·林德利(Sam Lindley)、菲利普·沃德勒(Philip Wadler)和杰里米·亚洛普(Jeremy Yallop)。链接:没有层次的Web编程。在{it FMCO}中,{it LNCS}第4709卷,第266-296页。斯普林格,2006年。
[7] 奥利维尔·丹维(Olivier Danvy)和安德烈·菲林斯基(Andrzej Filinski)。抽象控制。在《LISP和函数程序》中,第151-160页,1990年·Zbl 0798.68102号
[8] Olivier Danvy和Lasse R.Nielsen。一阶单程CPS变换。《理论》,308(1-3):239-2572003·Zbl 1049.03013号
[9] 斯蒂芬·多兰(Stephen Dolan)、利奥·怀特(Leo White)、K.C.西瓦拉马克里希南(K.C.Sivaramakrishnan)、杰里米·亚洛普(Jeremy Yallop)和安妮尔·马达瓦佩迪(Anil Madhavapedy)。通过代数效应实现有效并发。OCaml研讨会,2015年。
[10] 科马克·弗拉纳根(Cormac Flanagan)、阿姆·萨布里(Amr Sabry)、布鲁斯·杜巴(Bruce F.Duba)和马蒂亚斯·费尔莱森(Matthias Felleisen)。用续语句编译的本质。在{\it PLDI}中,第237-247页。ACM,1993年。
[11] Yannick Forster、Ohad Kammar、Sam Lindley和Matija Pretnar。关于用户定义效果的表达能力:效果处理程序、一元反射、分隔控件。{\it Proc.}{\it ACM Program.Lang.},1(ICFP),2017年9月·Zbl 1418.68034号
[12] Daniel Hillerström和Sam Lindley。行和处理程序的解放效果。在{\it中ICFP处的TyDe},第15-27页。ACM,2016年。
[13] 杰拉德·P·休特。拉链。{\it J.Funct.Program.},7(5):549-5541997·Zbl 0893.68014号
[14] Ohad Kammar、Sam Lindley和Nicolas Oury。处理程序正在运行。在{\it ICFP}中,第145-158页。ACM,2013年·Zbl 1323.68126号
[15] 安德鲁·肯尼迪。编译(续)。在{it ICFP}中,第177-190页。ACM,2007年·Zbl 1291.68124号
[16] Oleg Kiselyov和Hiromi Ishii。更自由的单子,更具扩展性的效果。在{it Haskell}中,第94-105页。ACM,2015年。
[17] Oleg Kiselyov和KC Sivaramakrishnan。OCaml中的直接效率。ML研讨会,2016年。
[18] Daan Leijen。行类型代数效果的类型定向编译。在{\it POPL}中,第486-499页。ACM,2017年·Zbl 1380.68097号
[19] :18
[20] 保罗·布莱恩·利维(Paul Blain Levy)、约翰·鲍尔(John Power)和哈约·泰勒克(Hayo Thielecke)。用按调用值编程语言建模环境。{信息计算},185(2):182-2102003·Zbl 1069.68073号
[21] :16
[22] :17
[23] :19计算类型C{\it A},{\it E}=(J{\it A}K(J{\it E}Kγγ ) γ ) (J{\it E}Kγγ ) γ型。C J{\it A}!{它E}K=γ{它A},{它E}效应类型J{':J{它A}'KJ{itB}'K}'∈LK{itC}=[':hJ{itA}'K,J{itB}'K{\it C}i]'∈L计算(其他情况是同态的){\it A}!{\it E}类型.λ{\it k}J{\it A}k(J{\it E}Kγγ)γ.{\它k}J(
[24] 萨姆·林德利和詹姆斯·切尼。用于数据库集成的基于行的效果类型。在{\it TLDI}中,第91-102页。ACM,2012年。
[25] 萨姆·林德利(Sam Lindley)、康诺·麦克布莱德(Conor McBride)和克雷格·麦克劳林(Craig McLaughlin)。Do be Do be Do.在{\it POPL}中,第500-514页。ACM,2017年·Zbl 1380.68098号
[26] 马雷克·马特佐克(Marek Materzok)和达里乌斯·比尔纳基(Dariusz Biernacki)。子类型分隔的延续。在{it ICFP}中,第81-93页。ACM,2011年·Zbl 1323.68081号
[27] 马雷克·马特佐克(Marek Materzok)和达里乌斯·比尔纳基(Dariusz Biernacki)。CPS层次结构的动态解释。在{it APLAS}中,{it LNCS}第7705卷,第296-311页。施普林格,2012年。
[28] 尤金尼奥·莫吉。计算和单子的概念。{信息计算},93(1):55-921991·兹比尔0723.68073
[29] 戈登·普洛金(Gordon D.Plotkin)。Call-by-name、Call-by-value和lambda-calculus。《理论与计算》,1(2):125-1591975年·Zbl 0325.68006号
[30] 戈登·普洛金(Gordon D.Plotkin)和约翰·鲍尔(John Power)。代数效应的充分性。在{it FoSSaCS}中,{it LNCS}第2030卷,第1-24页。斯普林格,2001年·Zbl 0986.68055号
[31] 戈登·普洛金(Gordon D.Plotkin)和马蒂亚·普雷特纳(Matija Pretnar)。处理代数效应。计算机科学中的逻辑方法,9(4),2013。doi:10.2168/LMCS-9(4:23)2013年·兹比尔1314.68191
[32] 马蒂亚·普雷特纳。代数效果和处理程序简介。{\it Elect.Notes Theor.}{\it Comput.Sci.},319:19-352015。受邀的辅导论文·Zbl 1351.68079号
[33] 迪迪埃·雷米。句法理论和记录术语代数。技术报告RR-1869,INRIA,1993年。
[34] 菲利普·瓦德勒。函数式编程的本质。在{\it POPL}中,第1-14页。ACM,1992年。
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。