×

爪哇和兰姆达:一个轻量级的故事。 (英语) Zbl 1398.68079号

摘要:我们提出了FJ&(\lambda),这是一种新的核心演算,它扩展了轻量级Java(FJ)具有接口,支持受限形式的多重继承,\(\lambda\)-表达式、和交叉点类型。我们的主要目标是通过在正式设置中研究lambdas和交集类型的属性,正式确定它们是如何嫁接到Java8上的。我们展示了交集类型如何在几种情况下发挥重要作用,特别是在(lambda)表达式的类型转换和条件表达式的类型化中。我们还体现了界面默认方法在FJ&\(\lambda\)中,由于它们通过允许对\(\lambda\”)表达式调用这些方法来增加\(\lambda\“)表达式的动态性。
Java 8和我们的演算中的关键点是,根据上下文要求,\(\lambda \)表达式可以有各种类型(目标类型):实际上,当\(\lambda\)-表达式没有目标类型时,Java代码不会编译。特别是,在操作语义中,我们必须通过修饰\(\lambda\)-表达式来记录目标类型,否则它们将在运行时表达式中丢失。
我们证明了所得到的演算的主题约简性质和过程,并且给出了一个类型推理算法,如果给定的程序类型良好,则返回该程序的类型。FJ&\(\lambda\)的设计目的是使其成为Java 8的子集,同时保持FJ的优雅和紧凑。实际上,FJ&\lambda程序是类型化的,其行为与Java程序相同。

MSC公司:

68甲15 编程语言理论
68甲18 函数编程和lambda演算
68甲19 其他编程范式(面向对象、顺序、并发、自动等)
PDF格式BibTeX公司 XML格式引用

参考文献:

[1] [AC96]马丁·阿巴迪和卢卡·卡德利。物体理论。施普林格,1996年。[Anc12]戴维德·安科纳。面向对象语言与协同大步长语义的健全性。詹姆斯·诺布尔(James Noble),ECOOP编辑,LNCS第7313卷,第459-483页。施普林格,2012年。[AZ01]戴维德·安科纳和埃琳娜·祖卡。类Java语言的真正模块。ECOOP编辑Jörgen Lindskov Knudsen,LNCS第2072卷,第354-380页。斯普林格,2001年。[AZ04]大卫·安科纳和埃琳娜·祖卡。类Java语言的主要类型。尼尔·琼斯(Neil D.Jones)和泽维尔·勒罗伊(Xavier Leroy),POPL编辑,第306-317页。ACM,2004年。[AZ12]戴维德·安科纳和埃琳娜·祖卡。Corecurive Featherweight Java。《金融时报》编辑魏恩甘·钦(Wei-Ngan Chin)和阿奎娜斯·霍伯(Aquina Hobor),第3-10页。ACM,2012年。[BBV11]Lorenzo Bettini、Viviana Bono和Betti Venneri。对象组合的授权。《计算机程序设计科学》,76(11):992–10142011年。[BCD13]洛伦佐·贝蒂尼(Lorenzo Bettini)、萨拉·卡佩基(Sara Capecchi)和费鲁西奥·达米亚尼(Ferruccio Damiani)。类Java语言的灵活动态特征替换。计算机程序设计科学,78(7):907-9322013。[BCDC+13]Lorenzo Bettini、Sara Capecchi、Mariangiola Dezani-Ciancaglini、Elena Giachino和Betti Venneri。派生对象的会话和并集类型。计算机科学中的数学结构,23(6):1163-12192013。[BCG08]洛伦佐·贝蒂尼(Lorenzo Bettini)、萨拉·卡佩基(Sara Capecchi)和埃琳娜·贾奇诺(Elena Giachino)。Featherweight包装Java:包装对象和方法。对象技术杂志,7(2):5-292008。[BCV09]洛伦佐·贝蒂尼(Lorenzo Bettini)、萨拉·卡佩奇(Sara Capecchi)和贝蒂·文内里(Betti Venneri)。动态和静态过载的羽量级Java。计算机程序设计科学,74(56):261-2782009·Zbl 1308.68035号
[2] [BD17]洛伦佐·贝蒂尼(Lorenzo Bettini)和费鲁西奥·达米亚尼(Ferruccio Damiani)。Xtraitj:Java平台的特性。《系统与软件杂志》,131(附录C):419–4412017。[BDD+15]Jan Bessai、Andrej Dudenhefner、Boris Düdder、Zzu-Chun Chen、Ugo de’Liguoro和Jakob Rehof。基于交集类型的Mixin合成。TLCA编辑托尔斯滕·阿尔滕科奇(Thorsten Altenkirch),《LIPIcs》第38卷,第76-91页。Schloss Dagstuhl,2015年。[BDS13]Henk Barendregt、Wil Dekkers和Richard Statman。带类型的Lambda微积分。逻辑观点。剑桥,2013年。[BL08]斯特芬·范·贝克尔和乌戈·德利古罗。子类型对象和递归类型的逻辑等价性。计算系统理论,42(3):306–3482008。[BW98]马丁·比奇和沃尔夫冈·威克。Java的复合类型。在比约恩·N·弗里曼-贝森和克雷格·钱伯斯,OOPSLA编辑,第362-373页。ACM,1998年。[案例97]朱塞佩·卡斯塔尼亚。面向对象编程:一个统一的基础。理论计算机科学进展。Birkhauser,1997年。[CNP01]大卫·克拉克(David G.Clarke)、詹姆斯·诺布尔(James Noble)和约翰·波特(John Potter)。对象包含的简单所有权类型。在ECOOP中,LNCS第2072卷,第53-76页。斯普林格,2001年。[CP96]阿德里亚娜·孔普诺尼(Adriana B.Compagnoni)和本杰明·皮尔斯(Benjamin C.Pierce)。高阶交集类型和多重继承。计算机科学中的数学结构,6(5):469–5011996。[DCDMY09]Mariangiola Dezani-Ciancaglini、Sophia Drossopoulou、Dimitris Mostrous和Nobuko Yoshida。对象和会话类型。信息与计算,207(5):595–6412009。系统,5(1):3–241999。
[3] [DP00]罗文·戴维斯(Rowan Davies)和弗兰克·普芬宁(Frank Pfenning)。交叉点类型和计算效果。ICFP编辑Martin Odersky和Philip Wadler,第198-208页。ACM,2000年。[FHM94]凯萨琳·费希尔(Kathleen Fisher)、福里奥·洪塞尔(Furio Honsell)和约翰·米切尔(John C.Mitchell)。对象和方法专业化的lambda微积分。《北欧计算杂志》,1(1):3–371994年。[GJS+15]詹姆斯·戈斯林(James Gosling)、比尔·乔伊(Bill Joy)、盖伊·斯蒂尔(Guy L.Steele)、吉拉德·布拉查(Gilad Bracha)和亚历克斯·巴克利(Alex Buckley)。Java语言规范,Java SE 8版。Oracle,2015年。[IN07]Atsushi Igarashi和Hideshi Nagira。面向对象编程的联合类型。对象技术杂志,6(2):47-682007。[IP02]Atsushi Igarashi和Benjamin C.Pierce。关于内部类。信息与计算,177(1):56-892002。[IPW01]井上Atsushi、Benjamin C.Pierce和Philip Wadler。轻量级Java:Java和GJ的最小核心演算。美国计算机学会程序设计语言与系统汇刊,23(3):396–450,2001年。[JVWH05]Suresh Jagannathan、Jan Vitek、Adam Welc和Antony Hosking。事务对象演算。计算机程序设计科学,57(2):164–1862005。[KEB+17]埃德利拉·库奇、塞巴斯蒂安·埃尔德韦格、奥利弗·布拉切瓦克、安迪·贝杰莱里和米拉·梅齐尼。Featherweight Java的一个协同类型检查器。ECOOP编辑彼得·米勒(Peter Müller),《LIPIcs》第74卷,第18:1-18:26页。达格斯图尔城堡,2017年。[LST02]Christopher League、Zhong Shao和Valery Trifonov。Featherweight Java的类型保护编译。《美国计算机学会编程语言与系统汇刊》,24(2):112-1522002年。[MKTD17]达沃德·马西纳安(Davood Mazinanian)、阿米亚·凯特卡(Ameya Ketkar)、尼古拉·桑塔利斯(Nikolaos Tsantalis)和丹尼·迪格(Danny Dig)。了解Java中Lambda表达式的使用。《美国计算机学会程序设计语言会议录》,1(OOPSLA):85:1–85:31,2017年。[Pie02]本杰明·C·皮尔斯。类型和编程语言。麻省理工学院出版社,2002年。马丁·普吕米克。Javaλ的油井类型。PPPJ编辑Christian W.Probst和Christian Wimmer,第91-100页。ACM,2011年。[PT00]本杰明·皮尔斯(Benjamin C.Pierce)和大卫·特纳(David N.Turner)。局部类型推断。《美国计算机学会编程语言与系统汇刊》,22(1):1–442000年。
[4] [RB14]鲁本·N.S.罗和斯特芬·范·贝克尔。Featherweight Java的语义类型和近似。理论计算机科学,517(补遗C):34-742014。[Stu01]托马斯·斯图德。轻量级Java的建设性基础。莱因哈德·卡勒(Reinhard Kahle)、彼得·施罗德·海斯特(Peter Schroeder-Heister)和罗伯特·斯特克(Robert Stärk),《计算机科学中的证明理论》(Proof Theory In Computer Science)编辑,LNCS第2183卷,第202-238页。斯普林格,2001年。1.简介2。语法3.查找功能4。操作语义5。打字规则6。受试者减少和进展7。默认方法8。条件9.类型推断10。相关工作11。结论和未来工作确认参考·Zbl 1358.68180号
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。