跳到主要内容
研究论文
开放式访问

作为参数多态性的结构子类型

出版:2023年10月16日出版历史
跳过抽象节

摘要

结构子类型和参数多态性为程序员提供了类似的灵活性和可重用性。例如,这两个功能都使程序员能够为期望窄记录的函数提供更宽记录作为参数。然而,他们这样做的方式大不相同,他们之间关系的确切细节充其量只是文学中的民间传说。

本文系统地研究了结构子类型和参数多态性的相对表达能力。我们的研究重点是确定以行和存在多态性形式的参数多态性在多大程度上可以为变量和记录类型编码结构子类型。我们的研究基于不同的教堂式λ-演算,扩展了记录和变体、不同形式的结构子类型以及行和存在多态性。

我们通过展示结石之间的构图转换来表征表现力。对于每个翻译,我们都证明了一个类型保持和操作对应结果。我们还证明了一些不存在的结果。通过对源类型和目标类型施加限制,我们进一步揭示了表达性景观中的微妙之处,这些限制使得原本不可能定义的翻译得以定义。更具体地说,我们证明了完整的亚型不能通过多态性编码,但我们证明了几种受限制的亚型可以通过特定形式的多态性编码。

跳过补充材料部分

补充材料

工具书类

  1. Joáo Alpuim、Bruno C.d.S.Oliveira和Shi Zhiyuan。2017.不相交多态性。《编程语言和系统——第26届欧洲编程研讨会》,2017年ESOP,作为欧洲软件理论与实践联合会议的一部分,2017年4月22日至29日,瑞典乌普萨拉,ETAPS 2017,会议记录,杨洪seok(Ed.)(计算机科学讲义,第10201卷)。施普林格,1-28。https://doi.org/10.1007/978-3-662-54434-1_1谷歌学者谷歌学者数字图书馆数字图书馆
  2. Graham M.Birtwistle、Ole-Johan Dahl、Bjorn Myhrhaug和Kristen Nygaard。1979年Simula Begin。Studentliteratur(瑞典隆德)、Bratt Institute fuer nues Lernen(哥赫,FRG)、Charwell Bratt Ltd(英国肯特)。谷歌学者谷歌学者
  3. 马蒂亚斯·布鲁姆、乌穆特·阿卡尔和旺塞克·蔡。2006.具有一流案例的可扩展编程。在ICFP中。美国医学会,239-250。谷歌学者谷歌学者
  4. 瓦尔·布雷祖·坦南(Val Breazu-Tannen)、蒂埃里·科昆德(Thierry Coquand)、卡尔·A·冈特(Carl A.Gunter)和安德烈·塞德洛夫(Andre Scedrov)。1991年继承是隐性胁迫。信息与计算,93,1(1991),172-221。编号:0890-5401https://doi.org/10.1016/0890-5401(91)90055-7摘自1989年IEEE计算机科学逻辑研讨会谷歌学者谷歌学者数字图书馆数字图书馆
  5. Val Breazu Tannen、Carl A.Gunter和Andre Scedrov。1990年,强制计算。《1990年ACM LISP和函数编程会议记录》,LFP 1990,法国尼斯,1990年6月27日至29日,Gilles Kahn(编辑)。ACM,44–60岁。https://doi.org/10.1145/91556.91590谷歌学者谷歌学者数字图书馆数字图书馆
  6. 卢卡·卡德利。1984年,《多重继承语义学》。《数据类型的语义》,国际研讨会,法国索菲亚·安蒂波利斯,1984年6月27日至29日,《会议录》,Gilles Kahn、David B.MacQueen和Gordon D.Plotkin(编辑)(计算机科学讲义,第173卷)。施普林格,51–67岁。https://doi.org/10.1007/3-540-13346-1_2谷歌学者谷歌学者交叉引用交叉引用
  7. 卢卡·卡德利。1988.结构子类型和权力类型的概念。在POPL中。ACM出版社,70–79。谷歌学者谷歌学者
  8. 卢卡·卡德利(Luca Cardelli)、西蒙·马蒂尼(Simone Martini)、约翰·米切尔(John C.Mitchell)和安德烈·塞德洛夫(Andre Scedrov)。1994.带子类型的系统F的扩展。信息计算。,109, 1/2 (1994), 4–56. https://doi.org/10.1006/inco.1994.1013谷歌学者谷歌学者数字图书馆数字图书馆
  9. 卢卡·卡德利和约翰·米切尔。1991.记录操作。数学。结构。计算。科学。,1, 1 (1991), 3–48. https://doi.org/10.1017/S0960129500000049谷歌学者谷歌学者交叉引用交叉引用
  10. 卢卡·卡德利和彼得·韦格纳。1985.关于理解类型、数据抽象和多态性。ACM计算。调查。,17, 4 (1985), 471–522. https://doi.org/10.1145/6041.6042谷歌学者谷歌学者数字图书馆数字图书馆
  11. 阿隆佐教堂。1940.简单类型理论的形成。J.赛姆布。日志。,5, 2 (1940), 56–68.谷歌学者谷歌学者交叉引用交叉引用
  12. 布鲁诺·C·d·S·奥利维拉(Bruno C.d.S.Oliveira)、施志远(Zhiyuan Shi)和乔·阿普伊姆(Joáo Alpuim)。2016年,不相交交叉类型。在2016年9月18日至22日于日本奈良举行的第21届ACM SIGPLAN国际函数编程会议的会议记录中,雅克·加里格、加布里埃·凯勒和艾希罗·苏米(编辑)。美国医学会,364–377。https://doi.org/10.1145/2951913.2951945谷歌学者谷歌学者数字图书馆数字图书馆
  13. 路易斯·达马斯和罗宾·米尔纳。1982年,功能程序的主体类型方案。第九届ACM SIGPLAN-SIGACT编程语言原理研讨会(POPL'82)会议记录。计算机械协会,美国纽约州纽约市207–212。编号:0897910656https://doi.org/10.1145/582153.582176谷歌学者谷歌学者数字图书馆数字图书馆
  14. 斯蒂芬·多兰(Stephen Dolan)。2016.代数分型。博士论文。计算机实验室。英国剑桥大学。谷歌学者谷歌学者
  15. 斯蒂芬·多兰(Stephen Dolan)和艾伦·迈克罗夫特(Alan Mycroft)。2017年。MLsub中的多态性、亚型和类型推断。在POPL中。ACM,60–72岁。谷歌学者谷歌学者
  16. 贾娜·邓菲尔德(Jana Dunfield)。2014.细化交集和并集类型。J.功能。程序。,24, 2-3 (2014), 133–165. https://doi.org/10.1017/S0956796813000270谷歌学者谷歌学者交叉引用交叉引用
  17. 弗兰克·埃里奇(Frank Emrich)、山姆·林德利(Sam Lindley)、简·斯托拉雷克(Jan Stolarek)、詹姆斯·切尼(James Cheney)和乔纳森·科茨(Jonathan Coates)。2020年。FreezeML:一级多态性的完整且简单的类型推断。第41届ACM SIGPLAN编程语言设计与实现会议记录(PLDI 2020)。计算机械协会,美国纽约州纽约市,423–437。编号:9781450376136https://doi.org/10.1145/3385412.3386003谷歌学者谷歌学者数字图书馆数字图书馆
  18. 马提亚斯·费莱森(Matthias Felleisen)。1991.关于编程语言的表达能力。科学。计算。程序。,17, 1-3 (1991), 35–75. 修订版谷歌学者谷歌学者数字图书馆数字图书馆
  19. 本尼迪克特·加斯特。1998年。记录、变体和合格类型。博士论文。诺丁汉大学。谷歌学者谷歌学者
  20. Benedict R Gaster和Mark P Jones。1996.可扩展记录和变体的多态类型系统。技术报告NOTTCS-TR-96-3,大学计算机科学系…。谷歌学者谷歌学者
  21. 吉恩·伊夫·吉拉德。1972年,《秩序保障算法的相互作用和限制》。博士论文。巴黎第七大学。法国。谷歌学者谷歌学者
  22. 罗伯特·威廉·哈珀和本杰明·皮尔斯。1990年。无包容的可扩展记录。2, https://doi.org/10.1184/R1/6605507.v1谷歌学者谷歌学者交叉引用交叉引用
  23. Daniel Hillerström和Sam Lindley。2016年,使用行和处理程序的解放效果。泰德@ICFP。ACM,15-27。谷歌学者谷歌学者
  24. Daan Leijen。2005.具有范围标签的可扩展记录。2005年爱沙尼亚塔林功能编程趋势研讨会(TFP’05)会议记录。https://www.microsoft.com/en-us/research/publication/extensible-records-with-scoped-labels(网址:https://www.microsoft.com/en-us/research/publication/extensible-records-with-scoped-labels)/谷歌学者谷歌学者
  25. Daan Leijen。2017.行型代数效应的类型定向编译。在2017年1月18日至20日于法国巴黎举行的第44届ACM SIGPLAN编程语言原理研讨会的会议记录中,朱塞佩·卡斯塔尼亚(Giuseppe Castagna)和安德鲁·戈登(Andrew D.Gordon)(编辑)。美国医学会,486–499。https://doi.org/10.1145/3009837.3009872谷歌学者谷歌学者数字图书馆数字图书馆
  26. J.Garrett Morris和James McKinna。2019.抽象可扩展数据类型:或使用任何其他名称的行。程序。ACM计划。Lang.,3,POPL(2019),12:1–12:28。谷歌学者谷歌学者
  27. 莱昂内尔·帕罗(Lionel Parreaux)和春寅洲(Chun Yin Chau)。MLstruct:结构类型布尔代数中的主类型推理。程序。ACM计划。Lang.,6,OOPSLA2(2022),449-478。https://doi.org/10.1145/3563304谷歌学者谷歌学者数字图书馆数字图书馆
  28. 本杰明·皮尔斯。2002.类型和编程语言。麻省理工学院出版社。编号:978-0-262-16209-8谷歌学者谷歌学者数字图书馆数字图书馆
  29. 弗朗索瓦·波蒂埃。1998年。在存在子类型的情况下的类型推断:从理论到实践。印度。https://hal.inia.fr/inia-00073205谷歌学者谷歌学者
  30. 弗朗索瓦·波蒂埃。2001年,《简化子类型约束:理论》。信息计算。,170,2(2001),153–183。https://doi.org/10.1006/inco.2001.2963谷歌学者谷歌学者数字图书馆数字图书馆
  31. 弗朗索瓦·波蒂埃和迪迪埃·雷米。2004年,《ML类型推理的本质》。在类型和编程语言高级主题中,Benjamin C.Pierce(Ed.)。麻省理工学院出版社,460-489。编号:9780262281591https://doi.org/10.7551/mitpress/104.003.0016谷歌学者谷歌学者交叉引用交叉引用
  32. 迪迪埃·雷米。1989年。ML自然扩展中的打字检查记录和变体。1989年1月11日至13日在美国德克萨斯州奥斯汀举行的第十六届美国计算机学会编程语言原理研讨会的会议记录。ACM出版社,77–88。https://doi.org/10.1145/75277.75284谷歌学者谷歌学者数字图书馆数字图书馆
  33. 迪迪埃·雷米。1994年,《自然延伸中记录的类型推断》,麻省理工学院出版社,美国马萨诸塞州剑桥,67–95。谷歌学者谷歌学者
  34. 约翰·雷诺兹(John C.Reynolds)。1974.走向类型结构理论。在编程专题讨论会上(LNCS,第19卷)。施普林格,408-423。谷歌学者谷歌学者交叉引用交叉引用
  35. 约翰·雷诺兹(John C.Reynolds)。1980。使用范畴理论设计隐式转换和泛型运算符。语义导向编译器生成(计算机科学讲义,第94卷)。施普林格,211-258。谷歌学者谷歌学者交叉引用交叉引用
  36. 瓦列里·特里福诺夫(Valery Trifonov)和斯科特·史密斯(Scott F.Smith)。1996.子类型约束类型。静态分析,第三届国际研讨会,SAS'96,德国亚琛,1996年9月24日至26日,Radhia Cousot和David A.Schmidt(编辑)论文集(计算机科学讲稿,第1145卷)。施普林格,349-365。https://doi.org/10.1007/3-540-61739-6_52谷歌学者谷歌学者交叉引用交叉引用
  37. 米切尔·旺德。1987。简单对象的完整类型推断。在LICS中。IEEE计算机学会,37-44。谷歌学者谷歌学者
  38. 谢宁宁、布鲁诺·C·d·S·奥利维拉、宣碧和汤姆·施里杰弗斯。2020年。通过不相交多态性的行和有界多态性。第34届欧洲面向对象编程会议,ECOOP 2020,2020年11月15-17日,德国柏林(虚拟会议),Robert Hirschfeld和Tobias Pape(编辑)(LIPIcs,第166卷)。达格斯图尔-莱布尼兹·泽特鲁姆宫(Schloss Dagstuhl-Leibniz-Zentrum für Informatik),27:1–27:30。https://doi.org/10.4230/LIPIcs.ECOOP.2020.27谷歌学者谷歌学者交叉引用交叉引用
  39. Han Xu、Xuejing Huang和Bruno C.d.S.Oliveira。2023.类型差异化:交叉口类型的减法作为通用记录操作。程序。ACM计划。语言,7,持久性有机污染物清单(2023),893–920。https://doi.org/10.1145/3571224谷歌学者谷歌学者数字图书馆数字图书馆

索引术语

  1. 作为参数多态性的结构子类型

        建议

        评论

        登录选项

        检查您是否可以通过登录凭据或您的机构访问本文。

        登录

        完全访问权限

        • 发布于

          封面图片美国计算机学会编程语言会议录
          美国计算机学会程序设计语言会议录 第7卷,第OOPSLA2期
          2023年10月
          2250页
          EISSN公司:2475-1421
          DOI(操作界面):10.1145/3554312
          期刊目录

          版权所有©2023所有者/作者

          本作品根据Creative Commons Attribution 4.0国际许可证授权。

          出版商

          计算机协会

          美国纽约州纽约市

          出版历史

          • 出版:2023年10月16日
          发布于太平洋石油公司第7卷,第OOPSLA2期

          权限

          请求有关此文章的权限。

          请求权限

          检查更新

          限定符

          • 研究论文
        • 文章指标

          • 下载量(最近12个月)192
          • 下载次数(最近6周)32

          其他指标

        PDF格式

        以PDF文件查看或下载。

        PDF格式

        电子阅读器

        使用eReader联机查看。

        电子阅读器