跳到主要内容
研究论文
开放式访问
可用工件/v1.1
评估的工件和可重用/v1.1

具有匹配类型的类型级编程

出版:2022年1月12日出版历史
跳过抽象节

摘要

类型级编程在函数编程领域越来越流行。然而,在实际的编程语言中,类型级编程和子类型的结合在很大程度上仍未被探索。本文介绍匹配类型,相当于模式匹配的类型级别。匹配类型通过子类型无缝集成到编程语言中,尽管它们很简单,但提供了显著的额外表达能力。我们在基于SystemF sub的演算中形式化了匹配类型的特征,并证明了其合理性。实际上,我们通过在Scala 3参考编译器中实现匹配类型来评估我们的系统,从而使类型级编程容易为广大程序员所用。

跳过补充材料部分

补充材料

popl22main-p258-p-video.mp4

英里4

25.4 MB

工具书类

  1. 马丁·阿巴迪、卢卡·卡德利、本杰明·皮尔斯和戈登·普洛特金。1991年。静态键入语言中的动态键入。ACM事务处理。程序。语言系统。,第13、2页(1991年),237至268年4月。发行号:0164-0925https://doi.org/10.1145/103135.103138谷歌学者谷歌学者数字图书馆数字图书馆
  2. 纳达·阿明(Nada Amin)、塞缪尔·格吕特(Samuel Grütter)、马丁·奥德斯基(Martin Odersky)、蒂亚克·隆普夫(Tiark Rompf)和桑德罗·斯塔基(Sandro Stucki)。2016.依赖对象类型的本质。施普林格国际出版公司,Cham。249–272. 国际标准编号:978-3-319-30936-1https://doi.org/10.1007/978-3-319-30936-1_14谷歌学者谷歌学者交叉引用交叉引用
  3. 大卫·阿斯皮纳尔。1995.使用单例类型进行子类型划分。在计算机科学逻辑国际研讨会上。施普林格柏林海德堡,柏林,海德堡。1-15。https://doi.org/10.1007/BFb0022243谷歌学者谷歌学者交叉引用交叉引用
  4. 布莱恩·艾德米尔(Brian Aydimer)、亚瑟·查尔盖罗(Arthur Charguéraud)、本杰明·皮尔斯(Benjamin C.Pierce)、兰迪·波拉克(Randy Pollack)和斯蒂芬妮·威里奇(Stephanie Weirich)。2008年,工程形式元理论。第35届ACM SIGPLAN-SIGACT编程语言原理研讨会会议记录(POPL'08)。美国纽约州纽约市计算机机械协会3–15。国际标准号码:9781595936899https://doi.org/10.1145/1328438.1328443谷歌学者谷歌学者数字图书馆数字图书馆
  5. 保罗·巴勒姆和迈克尔·伊萨德。2019.机器学习系统陷入困境。《操作系统热点专题研讨会论文集》(HotOS’19)。美国纽约州纽约市ACM,177–183。国际标准编号:978-1-4503-6727-1https://doi.org/10.1145/3317550.3321441谷歌学者谷歌学者数字图书馆数字图书馆
  6. 加文·比尔曼(Gavin Bierman)、马丁·阿巴迪(Martín Abadi)和麦德斯·托格森(Mads Torgersen)。2014.理解TypeScript。在第28届ECOOP欧洲会议记录2014-面向对象编程-第8586卷。斯普林格·弗拉格,海德堡,柏林。257-281。国际标准编号:9783662442012https://doi.org/10.1007/978-3-662-44202-9_11谷歌学者谷歌学者数字图书馆数字图书馆
  7. 奥利维尔·布兰诺克、乔纳森·布拉赫塔用户、马克西姆·卡哈尔和马丁·奥德斯基。2021.具有匹配类型的类型级编程。70http://infoscience.epfl.ch/record/290019谷歌学者谷歌学者
  8. 奥利维尔·布兰诺克、乔纳森·布拉赫塔用户、马克西姆·卡哈尔和马丁·奥德斯基。2021.带有匹配类型工件的类型级编程。https://doi.org/10.5281/zenodo.5568850谷歌学者谷歌学者数字图书馆数字图书馆
  9. Olivier Blannanke、Marios Iliofotou、Adelbert Chang、Gleb Kanterov和其他开源贡献者。2016–2021. 无框架。https://github.com/typelevel/frameless谷歌学者谷歌学者
  10. 卢卡·卡德利(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谷歌学者谷歌学者数字图书馆数字图书馆
  11. Manuel M.T.Chakravarty、Gabriele Keller和Simon Peyton Jones。2005.关联类型同义词。SIGPLAN否。,40,9(2005),241-253年9月。发行编号:0362-1340https://doi.org/10.1145/1090189.1086397谷歌学者谷歌学者数字图书馆数字图书馆
  12. 陈同飞。2017.张量操作的打字安全摘要(短文)。在第八届ACM SIGPLAN斯卡拉国际研讨会(Scala 2017)上发表。计算机械协会,美国纽约州纽约市,45-50。编号:9781450355292https://doi.org/10.1145/313600.3136001谷歌学者谷歌学者数字图书馆数字图书馆
  13. 朱迪卡·库兰特。2003。与单例类型的强规范化。理论计算机科学电子笔记,70,1(2003),53–71。https://doi.org/10.1016/S1571-0661(04)80490-0谷歌学者谷歌学者交叉引用交叉引用
  14. 理查德·艾森伯格(Richard A Eisenberg),2016年。Haskell中的依赖类型:理论与实践。宾夕法尼亚大学。谷歌学者谷歌学者
  15. 理查德·艾森伯格(Richard A.Eisenberg)、迪米特里奥斯·维蒂尼奥蒂斯(Dimitrios Vytiniotis)、西蒙·佩顿·琼斯(Simon Peyton Jones)和斯蒂芬妮·魏里奇(Stephanie Weirich)。2014.具有重叠方程的封闭型族。第41届ACM SIGPLAN-SIGACT编程语言原理研讨会(POPL’14)会议记录。计算机械协会,美国纽约州纽约市671–683。编号:9781450325448https://doi.org/10.1145/2535838.2535856谷歌学者谷歌学者数字图书馆数字图书馆
  16. 伯克·埃米尔、马丁·奥德斯基和约翰·威廉姆斯。2007.将对象与模式匹配。《第21届欧洲面向对象编程会议论文集》(ECOOP’07)。斯普林格·弗拉格,海德堡,柏林。273–298。编号:3540735887https://doi.org/10.1007/978-3-540-73589-2_14谷歌学者谷歌学者交叉引用交叉引用
  17. 保罗·贾鲁索(Paolo G.Giarrusso)、莱奥·斯特凡内斯科(Léo Stefanesco)、阿明·蒂马尼(Amin Timany)、拉尔斯·比克达尔(Lars Birkedal)和罗伯特·克雷布斯(Robbert Krebbers)。2020年。Scala逐步:在Iris Proc.中具有逐步索引逻辑关系的DOT的健全性。ACM计划。Lang.,4,ICFP(2020),第114条,29页。https://doi.org/10.1145/3408996谷歌学者谷歌学者数字图书馆数字图书馆
  18. 罗伯特·哈珀和格雷格·莫里塞特。1995.使用内涵类型分析编译多态性。第22届ACM SIGPLAN-SIGACT编程语言原理研讨会(POPL'95)会议记录。计算机械协会,美国纽约州纽约市130–141。isbn:0897916921https://doi.org/10.1145/199448.199475谷歌学者谷歌学者数字图书馆数字图书馆
  19. Charles R.Harris、K.Jarrod Millman、Stéfan J.van der Walt、Ralf Gommers、Pauli Virtanen、David Cournapeau、Eric Wieser、Julian Taylor、Sebastian Berg、Nathaniel J.Smith、Robert Kern、Matti Picus、Stephan Hoyer、Marten H.van Kerkwijk、Matthew Brett、Allan Haldane、Jaime Fernández del Río、Mark Wiebe、Pearu Peterson、Pierre Gérard-Marchant、,Kevin Sheppard、Tyler Reddy、Warren Weckesser、Hameer Abbasi、Christoph Gohlke和Travis E.Oliphant。2020年。使用NumPy进行阵列编程。《自然》杂志,5857825(2020),9月,357–362。https://doi.org/10.1038/s41586-020-2649-2谷歌学者谷歌学者交叉引用交叉引用
  20. Austin Huang、Sam Stites和Torsten Scholak。2017–2021. 哈斯克火炬。https://github.com/hasktorch/hasktorch谷歌学者谷歌学者
  21. 德莱斯利·哈钦斯(DeLesley S.Hutchins)。2010.纯子类型系统。第37届ACM SIGPLAN-SIGACT编程语言原理研讨会(POPL'10)会议记录。美国纽约州纽约市计算机协会287–298。编号:9781605584799https://doi.org/10.1145/1706299.1706334谷歌学者谷歌学者数字图书馆数字图书馆
  22. Oleg Kiselyov、Ralf Lämmel和Keean Schupke。2004.强类型异构集合。2004年ACM SIGPLAN Haskell研讨会论文集(Haskell'04)。计算机械协会,美国纽约州纽约市,96–107。国际标准编号:1581138504https://doi.org/10.1145/1017472.1017488谷歌学者谷歌学者数字图书馆数字图书馆
  23. 乔治·列昂蒂耶夫(George Leontiev)、尤金·伯马科(Eugene Burmako)、杰森·扎格(Jason Zaugg)、阿德里亚·摩尔(Adrian Moors)、保罗·菲利普斯(Paul Phillips)、奥隆港(Oron Port)和迈。SIP-23:基于文字的单例类型。https://docs.scala-lang.org/sips/42.type.html谷歌学者谷歌学者
  24. 刘风云。2016.检查模式匹配穷尽性的通用算法(短文)。2016年第七届ACM SIGPLAN Scala研讨会会议记录(Scala 2016)。美国纽约计算机械协会,61-64。编号:9781450346481https://doi.org/10.1145/2998392.2998401谷歌学者谷歌学者数字图书馆数字图书馆
  25. 阿贝尔·尼托(Abel Nieto)、赵耀宇(Yaoyu Zhao)、昂德·伊杰·洛塔克(Ondřej Lhoták)、安吉拉·张(Angela Chang)和贾斯汀·普(Justin Pu)。2020年。带显式Null的Scala。在第34届欧洲面向对象编程会议(ECOOP 2020)上,Robert Hirschfeld和Tobias Pape(编辑)(Leibniz International Proceedings In Informatics(LIPIcs),第166卷)。达格斯图尔宫——德国达格斯图莱布尼兹·泽特鲁姆·福尔·Informatik。25:1–25:26. isbn:978-3-95977-154-2 issn:1868-8969https://doi.org/10.4230/LIPIcs.ECOOP.2020.25谷歌学者谷歌学者交叉引用交叉引用
  26. 本杰明·皮尔斯。2002.类型和编程语言。麻省理工学院出版社。编号:0262162091谷歌学者谷歌学者
  27. Michael Pilquist和Scodec的开源贡献者。2013–2021. Scodec公司。https://github.com/scodec/scodec谷歌学者谷歌学者
  28. 玛丽安娜·拉波波特(Marianna Rapoport)、伊法兹·卡比尔(Ifaz Kabir)、保罗·何(Paul He)和昂德·伊杰·洛塔克(Ondřej Lhoták)。2017.依赖对象类型的简单可靠证明。程序。ACM计划。Lang.,1,OOPSLA(2017),第46条,10月,27页。https://doi.org/10.1145/3133870谷歌学者谷歌学者数字图书馆数字图书馆
  29. 亚历山大·拉什。2019.Tensor被认为有害。https://nlp.seas.harvard.edu/NamedTensor(网址:https://nlp.seas.harvard.edu/NamedTensor)谷歌学者谷歌学者
  30. Miles Sabin和Shapeless开源贡献者。2011–2021. 无形状。https://github.com/milessabin/shapeless网站谷歌学者谷歌学者
  31. 米歇尔·辛茨(Michel Schinz)。2005.为Java虚拟机编译Scala。博士论文。EPFL。洛桑。https://doi.org/10.5075/epfl-thessis-3302谷歌学者谷歌学者交叉引用交叉引用
  32. Tom Schrijvers、Simon Peyton Jones、Manuel Chakravarty和Martin Sulzmann。2008.使用开放式函数进行类型检查。在第13届ACM SIGPLAN函数编程国际会议(ICFP'08)的会议记录中。美国纽约计算机械协会,51–62。国际标准编号:9781595939197https://doi.org/10.1145/1411204.1411215谷歌学者谷歌学者数字图书馆数字图书馆
  33. Vilhelm Sjoberg,2015年。一种具有非终止性的独立类型语言。博士论文。宾夕法尼亚大学。谷歌学者谷歌学者
  34. 克里斯托弗·斯通和罗伯特·哈珀。2000年,《确定一种具有辛格尔顿类型的语言中的类型等价性》。第27届ACM SIGPLAN-SIGACT编程语言原理研讨会会议记录(POPL'00)。计算机械协会,美国纽约州纽约市214–227。国际标准编号:1581131259https://doi.org/10.1145/325694.325724谷歌学者谷歌学者数字图书馆数字图书馆
  35. TypeScript开发团队。2020年,《TypeScript手册》。https://www.typescriptlang.org/谷歌学者谷歌学者
  36. 斯蒂芬妮·维里奇、迪米特里奥斯·维蒂尼奥蒂斯、西蒙·佩顿·琼斯和史蒂夫·兹丹塞维奇。2011.生成型抽象和类型级计算。第38届ACM SIGPLAN-SIGACT编程语言原理研讨会(POPL'11)会议记录。计算机械协会,美国纽约州纽约市,227–240。编号:9781450304900https://doi.org/10.1145/1926385.1926411谷歌学者谷歌学者数字图书馆数字图书馆
  37. Yanpeng Yang和Bruno C.d.S.Oliveira。2017.统一打字和分型。程序。ACM计划。Lang.,1,OOPSLA(2017),第47条,26页。https://doi.org/10.1145/3133871谷歌学者谷歌学者数字图书馆数字图书馆
  38. Jan Zwanenburg,1999年。带有子类型的纯类型系统。在国际打字兰姆达演算和应用会议上。施普林格-柏林-海德堡,柏林,海德堡。381-396。https://doi.org/10.1007/3-540-48959-2_27谷歌学者谷歌学者交叉引用交叉引用

索引术语

  1. 具有匹配类型的类型级编程

            建议

            评论

            登录选项

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

            登录

            完全访问权限

            • 发布于

              封面图片美国计算机学会程序设计语言论文集
              美国计算机学会程序设计语言会议录 第6卷,第POPL期
              2022年1月
              1886页
              EISSN公司:2475-1421
              内政部:10.1145/3511309
              期刊目录

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

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

              出版商

              计算机协会

              美国纽约州纽约市

              出版历史

              • 出版:2022年1月12日
              发布于太平洋石油公司第6卷,第POPL期

              权限

              请求有关此文章的权限。

              请求权限

              检查更新

              限定符

              • 研究论文

            PDF格式

            以PDF文件查看或下载。

            PDF格式

            电子阅读器

            使用eReader联机查看。

            电子阅读器