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

分部类型构造函数:或,使特殊数据类型不那么特殊

发布时间:2019年12月20日出版历史记录
跳过抽象节

摘要

函数式编程语言假设类型构造函数是总数。然而,函数式程序员更清楚:反例包括对其内容进行限制性假设的容器类型(例如,要求可计算等式或排序函数),以及仅在某些参数选择上定义等式的类型族。我们提出了部分类型构造函数的语言设计和形式化理论,使用限定类型捕获类型构造函数的域。我们的设计既简单又富有表现力:我们支持部分数据类型作为一级公民(包括作为参数抽象的实例,如Haskell Functor和Monad类),并展示了一种简单的类型细化算法,避免给程序员带来过多的注释负担。我们表明,我们的类型系统拒绝ill-defined类型,可以编译成基于system F的语义模型。最后,我们使用我们系统的概念验证实现对Haskell代码体进行了实验分析;虽然有时我们的系统需要额外的注释,但在实际的Haskell代码中很少遇到这种情况。

跳过补充材料部分

补充材料

a40-jones.webm公司

网络管理

87.2 MB

工具书类

  1. Gert-Jan Bottu、Georgios Karachalias、Tom Schrijvers、Bruno C.d.S.Oliveira和Philip Wadler。2017.量化等级限制。第十届ACM SIGPLAN Haskell国际研讨会论文集(Haskell2017)。美国纽约州纽约市ACM,148-161。谷歌学者谷歌学者数字图书馆数字图书馆
  2. 安娜·波夫(Ana Bove)、亚历山大·克劳斯(Alexander Krauss)和马蒂厄·索索(Matthieu Sozeau)。2016.交互式定理证明程序中的偏爱和递归——概述。《计算机科学中的数学结构》26,1(2016),38–88。谷歌学者谷歌学者交叉引用交叉引用
  3. 吉拉德·布拉查、马丁·奥德斯基、大卫·斯塔迈尔和菲利普·沃德勒。1998.让未来成为过去的安全:为Java编程语言添加通用性。1998年ACM SIGPLAN面向对象编程系统、语言和;应用程序(OOPSLA’98),加拿大不列颠哥伦比亚省温哥华,1998年10月18-22日。加拿大不列颠哥伦比亚省温哥华ACM,183-200。谷歌学者谷歌学者数字图书馆数字图书馆
  4. 卢卡·卡德利和彼得·韦格纳。1985.关于理解类型、数据抽象和多态性。ACM计算。Surv公司。第17、4页(1985年12月),第471-523页。谷歌学者谷歌学者数字图书馆数字图书馆
  5. Manuel M.T.Chakravarty、Gabriele Keller、Simon Peyton Jones和Simon Marlow。2005.与类关联的类型。第32届ACM SIGPLAN-SIGACT编程语言原理研讨会会议记录(POPL'05)。美国加利福尼亚州长滩ACM,1-13。谷歌学者谷歌学者数字图书馆数字图书馆
  6. 詹姆斯·切尼和拉尔夫·欣兹。2003.一流的幻影类型。技术报告TR1901。康奈尔大学。谷歌学者谷歌学者
  7. 阿隆佐教堂。1940.简单类型理论的形成。J.塞姆。日志。5, 2 (1940), 56–68.谷歌学者谷歌学者交叉引用交叉引用
  8. 加布里埃尔·多斯·里斯和比亚恩·斯特劳斯特鲁普。2006.指定C++概念。第33届ACM SIGPLAN-SIGACT编程语言原理研讨会会议记录(POPL'06)。ACM,美国纽约州纽约市,295-308。谷歌学者谷歌学者
  9. 保罗·唐恩(Paul Downen)、扎卡里·沙利文(Zachary Sullivan)、泽娜·阿里奥拉(Zena M.Ariola)和西蒙·佩顿·琼斯(Simon Peyton Jones)。2019年,用扩展型做一份更快的咖喱。第十二届ACM SIGPLAN Haskell研讨会(Haskell'19)会议记录。ACM,德国柏林。谷歌学者谷歌学者数字图书馆数字图书馆
  10. 德里克·德雷尔(Derek Dreyer)、罗伯特·哈珀(Robert Harper)、曼努埃尔·M·T·查克拉瓦蒂(Manuel M.T.Chakravarty)和加布里埃尔·凯勒(Gabriele Keller)。2007年。模块化类别。在2007年1月17日至19日于法国尼斯举行的第34届ACM SIGPLAN-SIGACT编程语言原理研讨会的会议记录中,Martin Hofmann和Matthias Felleisen(编辑)。ACM,63–70岁。谷歌学者谷歌学者数字图书馆数字图书馆
  11. 本尼迪克特·加斯特(Benedict R.Gaster)和马克·琼斯(Mark P.Jones)。1996.可扩展记录和变体的多态类型系统。技术报告非TCS-TR-96-3。诺丁汉大学。谷歌学者谷歌学者
  12. GHC团队。2017.GHC用户指南文档。http://www.haskell.org/ghc/docs/latest/users_guide.pdf .谷歌学者谷歌学者
  13. Paul Hudak、Simon Peyton Jones和Philip Wadler(编辑)。1991年,编程语言Haskell报告,1.1版。可从以下位置获得http://haskell.org/definition/haskell-报告-1.1.tar.gz。谷歌学者谷歌学者
  14. Paul Hudak和Philip Wadler(编辑)。1990年,编程语言Haskell报告,1.0版。可从以下位置获得http://haskell.org/definition/haskell-报告-1.0.ps.gz。谷歌学者谷歌学者
  15. 布莱恩·查尔斯·霍夫曼。2012年,HOLCF’11:验证功能程序的定义域理论。博士论文。美国俄勒冈州波特兰市波特兰州立大学顾问胡克(James G.Hook)和约翰·马修斯(John Matthews)。谷歌学者谷歌学者数字图书馆数字图书馆
  16. 约翰·休斯。1999.Haskell中的受限数据类型。1999年哈斯克尔研讨会论文集。乌得勒支大学,技术报告UU-CS-1999-28,法国巴黎,83-100。谷歌学者谷歌学者
  17. 马克·琼斯。1993年a。合格类型的一致性。技术报告YALEU/DCS/RR-989。耶鲁大学。谷歌学者谷歌学者
  18. 马克·琼斯。1993年b。构造函数类系统:重载和隐式高阶多态。在函数编程和计算机体系结构会议(FPCA’93)上。ACM,丹麦哥本哈根,52-61。谷歌学者谷歌学者数字图书馆数字图书馆
  19. 马克·琼斯。1994.合格类型:理论与实践。剑桥大学出版社,英国剑桥。谷歌学者谷歌学者交叉引用交叉引用
  20. 马克·琼斯。1995年。重载和高阶多态的函数编程。高级函数编程技术第一国际春季学校(计算机科学讲义),第925卷。施普林格,柏林-海德堡,97-136。谷歌学者谷歌学者
  21. 马克·琼斯。1995年b月。简化和改进合格类型。第七届函数式编程语言和计算机体系结构国际会议论文集(FPCA’95)。美国加利福尼亚州拉霍亚市ACM,160-169。谷歌学者谷歌学者数字图书馆数字图书馆
  22. 马克·琼斯。2000.具有函数依赖性的类型类。第九届欧洲编程语言与系统研讨会(ESOP’00)会议记录。施普林格-弗拉格,德国柏林,230-244。谷歌学者谷歌学者交叉引用交叉引用
  23. 奥列格·基塞利约夫。2007年。Haskell只有一个类型类。http://okmij.org/ftp/Haskell/Haskill1/Haskell1.txt .谷歌学者谷歌学者
  24. Csongor Kiss、Tony Field、Susan Eisenbach和Simon Peyton Jones。2019.哈斯克尔的高阶类型级编程。《ACM SIGPLAN函数编程国际会议论文集》(ICFP’19)。ACM,德国柏林。谷歌学者谷歌学者数字图书馆数字图书馆
  25. John Launchbury和Ross Paterson。1996年。参数化和未定点类型的取消装箱。第六届欧洲编程语言与系统研讨会(ESOP’96)会议记录。斯普林格·弗拉格,英国伦敦,英国,204-218。http://dl.acm.org/citation.cfm?id=645391.651452谷歌学者谷歌学者交叉引用交叉引用
  26. 西蒙·马洛(编辑)。2010年Haskell 2010语言报告。可从https://www.haskell.org/documentation在线获取HTML和pdf格式。谷歌学者谷歌学者
  27. 阿德里亚·摩尔(Adrian Moors)、弗兰克·皮森斯(Frank Piessens)和马丁·奥德斯基(Martin Odersky)。2008年,《更高级的泛型》。第23届ACM SIGPLAN面向对象编程系统语言和应用会议论文集(OOPSLA’08)。美国纽约州纽约市ACM,423-438。谷歌学者谷歌学者数字图书馆数字图书馆
  28. J.Garrett Morris和Richard A.Eisenberg,2017年。约束类型族。程序。ACM计划。Lang.1,ICFP,第42条(2017年8月),28页。谷歌学者谷歌学者数字图书馆数字图书馆
  29. J.Garrett Morris和James McKinna。2019.抽象可扩展数据类型:或使用任何其他名称的行。PACMPL 3,POPL(2019),12:1–12:28。https://dl.acm.org/citation.cfm?id=3290325谷歌学者谷歌学者
  30. 多米尼克·乌节(Dominic Orchard)和汤姆·施里杰弗斯(Tom Schrijvers)。2010年哈斯克尔类型约束释放。在第十届函数和逻辑编程国际会议(FLOPS’10)的会议记录中。斯普林格·弗拉格,柏林,海德堡,56-71。谷歌学者谷歌学者数字图书馆数字图书馆
  31. 安德斯·佩尔森、埃米尔·阿克塞尔松和约瑟夫·斯文宁森。2011.嵌入式语言的通用Monadic构造。《函数语言的实现和应用——第23届国际研讨会》,IFL 2011,劳伦斯,堪萨斯州,美国,2011年10月3-5日,修订论文选集(计算机科学讲稿),安迪·吉尔和朱里安·黑格(编辑),第7257卷。施普林格,85–99岁。谷歌学者谷歌学者数字图书馆数字图书馆
  32. 西蒙·佩顿·琼斯。1991.数据和类型的上下文。http://code.haskell.org/~dons/haskell-1990-2000/msg00072.html。谷歌学者谷歌学者
  33. Tom Schrijvers、Simon Peyton Jones、Manuel Chakravarty和Martin Sulzmann。2008.使用开放式函数进行类型检查。在第13届ACM SIGPLAN功能编程国际会议(IFCP’08)上。ACM,维多利亚,不列颠哥伦比亚省,加拿大,51-62。谷歌学者谷歌学者数字图书馆数字图书馆
  34. Tom Schrijvers、Simon L.Peyton Jones、Martin Sulzmann和Dimitrios Vytiniotis。2009年。GADT的完整和可判定类型推断。2009年8月31日至9月2日,在英国苏格兰爱丁堡举行的第14届ACM SIGPLAN功能编程国际会议上,Graham Hutton和Andrew P.Tolmach(编辑)。美国医学会,341-352。谷歌学者谷歌学者数字图书馆数字图书馆
  35. 达纳·斯科特。直觉主义逻辑中的同一性和存在性。《滑轮的应用:滑轮理论在逻辑、代数和分析中的应用研究研讨会论文集》,达勒姆,1977年7月9日至21日,Michael Fourman、Christopher Mulvey和Dana Scott(编辑)。施普林格-柏林-海德堡,柏林,海德堡(Heidelberg),660-696。谷歌学者谷歌学者交叉引用交叉引用
  36. 尼尔·斯卡索普(Neil Sculthorpe)、扬·布拉克(Jan Bracker)、乔治·乔治泽(George Giorgidze)和安迪·吉尔(Andy Gill)。2013.受约束的monad问题。在第18届ACM SIGPLAN函数编程国际会议(ICFP’13)的会议记录中。ACM,美国纽约州纽约市,287-298。谷歌学者谷歌学者数字图书馆数字图书馆
  37. Jan Stolarek、Simon L.Peyton Jones和Richard A.Eisenberg,2015年。Haskell的注入型族。2015年9月3日至4日,加拿大不列颠哥伦比亚省温哥华市,第八届ACM SIGPLAN Haskell研讨会论文集,Ben Lippmeier(编辑)。加拿大不列颠哥伦比亚省温哥华市ACM,118-128。谷歌学者谷歌学者数字图书馆数字图书馆
  38. 本贾尼·斯特劳斯特卢普。1994年。C++的设计和发展。Addison-Wesley,马萨诸塞州波士顿。谷歌学者谷歌学者
  39. 桑德罗·斯塔基。2017.带类型间隔的高阶子类型。博士论文。瑞士洛桑埃科尔理工学院计算机与通信科学学院。谷歌学者谷歌学者交叉引用交叉引用
  40. 马丁·苏尔兹曼(Martin Sulzmann)、曼努埃尔·查克拉瓦蒂(Manuel M.T.Chakravarty)、西蒙·佩顿·琼斯(Simon L.Peyton Jones)和凯文·唐纳利(Kevin Donnelly)。2007.具有类型相等强制的系统F。《TLDI’07:2007 ACM SIGPLAN语言设计与实现类型国际研讨会论文集》,法国尼斯,2007年1月16日,弗朗索瓦·波蒂埃和乔治·内库拉(编辑)。ACM,53–66。谷歌学者谷歌学者数字图书馆数字图书馆
  41. 约瑟夫·斯文宁森(Josef Sveningsson)和博·乔尔·斯文森(Bo Joel Svensson)。2013年,一元嵌入式语言的简单组合具体化。2013年9月25日至27日,在美国马萨诸塞州波士顿举行的ACM SIGPLAN功能编程国际会议上,Greg Morrisett和Tarmo Uustalu(编辑)。美国医学会,299-304。谷歌学者谷歌学者数字图书馆数字图书馆
  42. 托马斯·维南特(Thomas Winant)、多米尼克·德弗里斯(Dominique Devriese)、弗兰克·皮森斯(Frank Piessens)和汤姆·施里杰弗斯(Tom Schrijvers)。2014.Haskell的部分类型签名。《声明性语言的实践方面》,第8324卷。施普林格国际出版公司,17-32。谷歌学者谷歌学者
  43. 安德鲁·赖特(Andrew K.Wright)和马蒂亚斯·费尔莱森(Matthias Felleisen)。1994年,《类型发音的句法方法》。Inf.计算。115, 1 (1994), 38–94.谷歌学者谷歌学者数字图书馆数字图书馆
  44. Xi Hongwei、Chen Chiyan和Gang Chen。2003.受保护的递归数据类型构造函数。第30届ACM SIGPLAN-SIGACT编程语言原理研讨会(POPL'03)会议记录。ACM,美国纽约州纽约市,224-235。谷歌学者谷歌学者数字图书馆数字图书馆

索引术语

  1. 分部类型构造函数:或者,使特设数据类型不那么特设

        建议

        评论

        登录选项

        请检查您是否可以通过登录凭据或您的机构访问此文章以获得完全访问权限。

        登录

        完全访问权限

        • 发布于

          封面图片美国计算机学会编程语言会议录
          美国计算机学会程序设计语言会议录 第4卷,第POPL期
          2020年1月
          1984页
          EISSN公司:2475-1421
          内政部:10.1145/3377388
          期刊目录

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

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

          出版商

          计算机协会

          美国纽约州纽约市

          出版历史记录

          • 发布时间:2019年12月20日
          发布于太平洋石油公司第4卷,第POPL期

          权限

          请求有关此文章的权限。

          请求权限

          检查更新

          限定符

          • 研究论文

        PDF格式

        以PDF文件查看或下载。

        PDF格式

        电子阅读器

        使用eReader联机查看。

        电子阅读器