×

Effekt:Scala中用于类型和效果安全的可扩展效果处理程序的功能传递样式。 (英语) Zbl 1442.68024号

摘要:效果处理程序是以模块化方式构建有效程序的一种很有前途的方法。我们介绍了Scala库Effekt,它以功能传递为中心,并以单子形式实现多提示分隔的延续。Effekt是第一个效果处理程序的库实现,它支持效果安全性和效果多态性,而不依赖于类型级编程。我们描述了一种使用交集类型和路径依赖类型实现效果安全的新方法。我们图书馆设计的效果系统很好地符合能力传递的编程范式,并受到了Y.Zhang先生A.C.迈尔斯[“通过隧道的抽象安全效果处理程序”,《美国医学会程序汇编》第3版,第POPL号,第5条,第29页(2019年;数字对象标识代码:10.1145/3290318)]. 功能带有一个抽象类型成员,它表示一个单独的效果类型,并反映了在类型级别上对功能的使用。我们将效果行表示为效果类型的逆变交集。处理程序引入功能并删除交叉点类型的组件。重用现有的Scala类型系统,我们免费获得了效果子类型和效果多态性。

MSC公司:

第68页第18页 函数编程和lambda演算
68甲15 编程语言理论
PDF格式BibTeX公司 XML格式引用
全文: 内政部

参考文献:

[1] Amin,N.&Tate,R.(2016)Java和Scala的类型系统不健全:空指针的存在危机。《面向对象编程、系统、语言和应用会议论文集》。美国纽约州纽约市:ACM,第838-848页。
[2] Bauer,A.和Pretnar,M.(2015)《代数效果和处理程序编程》。J.日志。藻类。方法程序。84(1),108-123·Zbl 1304.68025号
[3] Biernacki,D.、Piróg,M.、Polesiuk,P.和Sieczkowski,F.(2017)小心处理:代数效应和处理程序的关系解释。程序。ACM计划。语言2(POPL),8:1-8:30。
[4] Biernacki,D.、Piróg,M.、Polesiuk,P.和Sieczkowski,F.(2019)抽象代数效应。程序。ACM计划。语言3(POPL),6:1-6:28。
[5] Brachthäuser,J.I.&Schuster,P.(2017)Effekt:Scala中的可扩展代数效应(短文)。在Scala国际研讨会的会议记录中。美国纽约州纽约市:ACM。
[6] Brachthäuser,J.I.,Schuster,P.&Ostermann,K.(2018)《大众的效果处理者》。程序。ACM计划。语言2(OOPSLA),111:1-111:27·Zbl 1442.68024号
[7] Carette,J.、Kiselyov,O.和Shan,C.-C.(2007)最终无标签,部分评估。《亚洲程序设计语言与系统研讨会论文集》。LNCS,第4807卷。柏林,海德堡:施普林格,第222-238页·Zbl 1191.68158号
[8] Convent,L.、Lindley,S.、Mcbride,C.和Mclaughlin,C.(2019)《斗蜂斗蜂》。技术报告。爱丁堡大学·Zbl 1442.68026号
[9] Danvy,O.和Filinski,A.(1992)《代表控制:CPS转换的研究》。数学。结构。计算。科学2(4),361-391·Zbl 0798.68102号
[10] Danvy,O.&Filinski,A.(1989)类型化上下文的功能抽象。迪库融洽89/12,迪库,哥本哈根大学。
[11] Danvy,O.&Filinski,A.(1990)抽象控制。在LISP和函数编程会议记录中。美国纽约州纽约市:ACM,第151-160页。
[12] Dolan,S.、Eliopoulos,S.,Hillerström,D.、Madhavapedy,A.、Sivaramakrishnan,K.C.和White,L.(2017)《带效果处理程序的并发系统编程》。函数编程趋势研讨会论文集。LNCS,第10788卷。斯普林格。
[13] Dolan,S.、White,L.和Madhavapedy,A.(2014)多核OCaml。在OCaml车间。
[14] Dolan,S.、White,L.、Sivaramakrishnan,K.C.、Yallop,J.和Madhavapedy,A.(2015)通过代数效应实现有效并发。在OCaml车间。
[15] Dybvig,R.K.,Peyton,J.,Simon,L.&Sabry,A.(2007)界定延续的一元框架。J.功能。程序.17(6),687-730·Zbl 1130.68038号
[16] Felleisen,M.(1988)一级提示的理论与实践。在程序设计语言原理研讨会论文集上。美国纽约州纽约市:ACM,第180-190页。
[17] Forster,Y.、Kammar,O.、Lindley,S.和Pretnar,M.(2017)关于用户定义效果的表达能力:效果处理程序、单数反射、分隔控制。程序。ACM计划。语言1(ICFP),13:1-13:29。
[18] Friedman,D.P.、Haynes,C.T.和Kohlbecker,E.(1984)《延续编程》。《程序转换和编程环境》,Pepper,P.(ed),柏林,海德堡:Springer-Verlag·Zbl 0547.68014号
[19] Gaster,B.R.&Jones,M.P.(1996)《可扩展记录和变体的多态类型系统》。技术报告NOTTCS-TR-96-3。
[20] Gunter,C.A.,Rémy,D.&Riecke,J.G.(1995)类ML语言中异常和控制的泛化。函数编程语言和计算机体系结构会议论文集。美国纽约州纽约市:ACM,第12-23页。
[21] Haller,P.和Loiko,A.(2016)LaCasa:Scala中的轻量级亲和力和对象功能。《面向对象编程、系统、语言和应用会议论文集》。美国纽约州纽约市:ACM,第272-291页。
[22] Hieb,R.&Dybvig,R.K.(1990)《延续与并发》。第二届ACM SIGPLAN并行编程原理与实践研讨会论文集。90年PPOPP。美国纽约州纽约市:ACM,第128-136页。
[23] Hieb,R.、Dybvig,R.K.和Anderson,Iii,C.W.(1994)《亚大陆》。Lisp符号。计算7(1),83-110。
[24] Hillerström,D.&Lindley,S.(2016)《使用行和处理程序的解放效果》。在类型驱动开发研讨会的会议记录中。美国纽约州纽约市:ACM。
[25] Hillerström,D.,Lindley,S.,Atkey,B.&Sivaramakrishnan,K.C.(2017)效果处理者的连续传球风格。《计算和演绎的形式结构》,LIPIcs,第84卷。Dagstuhl-Leibniz-Zentrum für Informatik宫·Zbl 1441.68017号
[26] Hudak,P.(1998)模块化领域特定语言和工具。在软件重用会议记录中。IEEE计算机学会,第134-142页。
[27] Inostroza,P.&Van Der Storm,T.(2018年)。杰夫:效果对象。2018年ACM SIGPLAN国际研讨会论文集,关于编程和软件的新思想、新范式和思考。向前的!2018年,美国纽约州纽约市:ACM。
[28] Johnson,G.F.和Duggan,D.(1988年)。在语言及其环境中将存储和部分延续作为一级对象。在编程语言原理研讨会的会议记录中。美国纽约州纽约市:ACM,第158-168页。
[29] Kammar,O.、Lindley,S.和Oury,N.(2013)诉讼处理人。函数编程国际会议论文集。美国纽约州纽约市:ACM,第145-158页·Zbl 1323.68126号
[30] Kiselyov,O.&Ishii,H.(2015)《自由单子,更具扩展性的效果》。在Haskell研讨会的会议记录中。美国纽约州纽约市:ACM,第94-105页。
[31] Kiselyov,O.&Shan,C.-C.(2008)轻量级单子区。在Haskell研讨会的会议记录中。哈斯克尔'08。美国纽约州纽约市:ACM。
[32] Kiselyov,O.和Sivaramakrishnan,K.C.(2016)。OCaml中的直接效率。ML研讨会。
[33] Kiselyov,O.和Sivaramakrishnan,K.C.(2018),直接在OCaml生效。《ML系列研讨会/OCaml用户和开发人员研讨会论文集》,Asai,K.&Shinwell,M.(编辑)。理论计算机科学电子论文集,第285卷。开放出版协会,第23-58页。
[34] Kiselyov,O.、Sabry,A.和Swords,C.(2013)《可扩展效果:单子变压器的替代品》。在Haskell研讨会的会议记录中。美国纽约州纽约市:ACM,第59-70页。
[35] Kiselyov,O.,Shan,C.-C.&Sabry,A.(2006)定界动态绑定。函数编程国际会议论文集。美国纽约州纽约市:ACM,第26-37页·Zbl 1321.68128号
[36] Kobori,I.、Kameyama,Y.和Kiselyov,O.(2016)《无撕裂的答案类型修改:类型分隔控制运算符的快速传递风格翻译》。arxiv预打印arxiv:1606.06379。
[37] Launchbury,J.&Sabry,A.(1997)《一元状态:公理化和类型安全》。函数编程国际会议论文集。1997年国际刑事政策委员会。美国纽约州纽约市:ACM,第227-238页·Zbl 1369.68107号
[38] Leijen,D.(2014)Koka:用行多态效应类型编程。数学结构函数编程研讨会论文集·Zbl 1464.68062号
[39] Leijen,D.(2016)函数编程的代数效应。技术报告MSR-TR-2016-29。Microsoft Research技术报告。
[40] Leijen,D.(2017a)在C.中实现代数效应。《亚洲编程语言与系统研讨会论文集》。瑞士查姆:施普林格国际出版公司,第339-363页。
[41] Leijen,D.(2017b)。具有代数效应的结构化异步。在类型驱动开发研讨会的会议记录中。美国纽约州纽约市:ACM,第16-29页。
[42] Leijen,D.(2017c)。行类型代数效果的类型定向编译。在编程语言原理研讨会的会议记录中。美国纽约州纽约市:ACM,第486-499页·Zbl 1380.68097号
[43] Leijen,D.(2018)。第一类动态效果处理程序:或者,具有动态效果处理函数的多态堆。在类型驱动开发研讨会的会议记录中。美国纽约州纽约市:ACM,第51-64页。
[44] Liang,S.,Hudak,P.&Jones,M.(1995年)《Monad变形金刚和模块化口译员》。在编程语言原理研讨会的会议记录中。美国纽约州纽约市:ACM,第333-343页。
[45] Lindley,S.(2018)封装效应。达格斯图尔报告,8(4)。
[46] Lindley,S.、Mcbride,C.和Mclaughlin,C.(2017)Do be Do be Do.摘自《编程语言原理研讨会论文集》。美国纽约州纽约市:ACM,第500-514页·Zbl 1380.68098号
[47] Liu,F.(2016)《基于能力的效果系统研究》。Phil硕士论文,瑞士洛桑埃科尔理工学院。
[48] Materzok,M.和Biernacki,D.(2011年)《分型定界延续》。函数编程国际会议论文集。美国纽约州纽约市:ACM,第81-93页·Zbl 1323.68081号
[49] Moggi,E.&Sabry,A.(2001)《效果的单子封装:修订方法》(扩展版)。J.功能。程序.11(6),591-627·Zbl 1037.68023号
[50] Odersky,M.,Blanrolink,O.,Liu,F.,Biboudis,A.,Miller,H.&Stucki,S.(2017)《简明:隐式函数类型的基础和应用》。程序。ACM计划。朗格2(POPL),42:1-42:29。
[51] Odersky,M.和Zenger,M.(2005a)表达式问题的独立可扩展解决方案。在面向对象语言基础研讨会论文集上。
[52] Odersky,M.和Zenger,M.(2005b)可伸缩组件抽象。《面向对象编程、系统、语言和应用会议论文集》。美国纽约州纽约市:ACM,第41-57页。
[53] Oliveira,B.C.d.S.和Cook,W.R.(2012)《大众的可扩展性:对象代数的实用可扩展性》。《面向对象编程欧洲会议论文集》。LNCS,第7313卷。施普林格,第2-27页。
[54] Osvald,L.、Essertel,G.、Wu,X.、Alayón,L.I.G.和Rompf,T.(2016)绅士化走得太远了?经济实惠的第二类价值观,带来乐趣和(协同)效果。《面向对象编程、系统、语言和应用会议论文集》。美国纽约州纽约市:ACM,第234-251页。
[55] Parreaux,L.、Voizard,A.、Shaikhha,A.和Koch,C.E.(2017)。统一分析型和静态型准引号。程序。ACM计划。朗格2(POPL),13:1-13:33。
[56] Piróg,M.,Polesiuk,P.&Sieczkowski,F.(2019)《效果处理程序和分隔控制的类型等价性》。在计算和演绎的形式结构中。LIPIcs公司。Dagstuhl-Leibniz-Zentrum für Informatik宫,第30:1-30:16页·Zbl 1524.68061号
[57] Plotkin,G.&Power,J.(2003)代数运算和一般效应。申请。类别。结构11(1),69-94·Zbl 1023.18006号
[58] Plotkin,G.和Pretnar,M.(2009)《代数效应的处理者》。在欧洲编程研讨会上。Springer-Verlag,第80-94页·Zbl 1234.68059号
[59] Plotkin,G.D.和Pretnar,M.(2013)处理代数效应。日志。方法计算。科学9(4),1-36·Zbl 1314.68191号
[60] Rapoport,M.&Lhoták,O.(2019年)。DOT的路径:形式化完全路径依赖类型。Corr,abs/1904.07298。
[61] Sitaram,D.&Felleisen,M.(1990)控制分隔符及其层次结构。Lisp符号。计算3(1),67-99。
[62] Wadler,P.(1998)。表达式问题。Java Genericity邮件列表注意事项。
[63] Wright,A.K.和Felleisen,M.(1994)《类型健全性的句法方法》。Inf.Comput.115(1),38-94·Zbl 0938.68559号
[64] Wu,N.,Schrijvers,T.&Hinze,R.(2014)范围内的效果处理程序。在Haskell研讨会的会议记录中。哈斯克尔14岁。美国纽约州纽约市:ACM,第1-12页。
[65] Zhang,Y.&Myers,A.C.(2019)通过隧道提取安全效果处理程序。程序。ACM计划。语言3(POPL),5:1-5:29。
[66] Zhang,Y.,Salvaneschi,G.,Beightol,Q.,Liskov,B.&Myers,A.C.(2016)接受安全隧道例外的责任。编程语言设计与实现会议记录。美国纽约州纽约市:ACM,第281-295页。
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。