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

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

出版:2019年12月20日 出版历史
  • 获取引文提醒
  • 摘要

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

    补充材料

    WEBM文件 (a40-jones网站)

    工具书类

    [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]
    吉拉德·布拉查(Gilad Bracha)、马丁·奥德斯基(Martin Odersky)、大卫·斯塔塔迈尔(David Stoutamire)和菲利普·沃德勒(Philip Wadler)。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、Manuel M.T.Chakravarty和Gabriele Keller。2007年。模块化类别。在2007年1月17日至19日在法国尼斯举行的第34届ACM SIGPLAN-SIGCT编程语言原理研讨会论文集,POPL 2007,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]
    马克·P·琼斯。1995年。重载和高阶多态的函数编程。高级函数编程技术第一国际春季学校(计算机科学讲义),第925卷。施普林格,柏林-海德堡,97-136。
    [21]
    马克·琼斯。1995年b。简化和改进合格类型。第七届函数式编程语言和计算机体系结构国际会议论文集(FPCA’95)。美国加利福尼亚州拉霍亚市ACM,160-169。
    [22]
    马克·P·琼斯。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,《大众》(2019),12:1–12:28。https://dl.acm.org/citation.cfm?id=3290325
    [30]
    多米尼克·乌节(Dominic Orchard)和汤姆·施里杰弗斯(Tom Schrijvers)。2010年哈斯克尔类型约束释放。在第十届函数和逻辑编程国际会议(FLOPS’10)的会议记录中。斯普林格·弗拉格,柏林,海德堡,56-71。
    [31]
    安德斯·佩尔森(Anders Persson)、埃米尔·阿克塞尔森(Emil Axelsson)和约瑟夫·斯文宁森(Josef Sveningsson)。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年,《受限人名问题》。在第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。

    引用人

    查看全部
    • (2021)多态可迭代序列效应系统程序设计语言与系统学报10.1145/345027243:1(1-79)网上发布日期:2021年4月

    建议

    评论

    信息和贡献者

    问询处

    发布时间

    封面图片美国计算机学会编程语言会议录
    美国计算机学会程序设计语言会议录 第4卷,第POPL期
    2020年1月
    1984页
    EISSN公司:2475-1421
    内政部:10.1145/3377388
    期刊目录
    本作品根据Creative Commons Attribution International 4.0许可证授权。

    出版商

    计算机协会

    美国纽约州纽约市

    出版历史

    出版:2019年12月20日
    在PACMPL中发布体积4,问题府绸

    权限

    请求对此文章的权限。

    检查更新

    作者标记

    1. 参数多态性
    2. 类型构造函数

    限定符

    • 研究文章

    资金来源

    贡献者

    其他指标

    文献计量学和引文

    文献计量学

    文章指标

    • 下载次数(过去12个月)144
    • 下载次数(最近6周)8

    其他指标

    引文

    引用人

    查看全部
    • (2021)多态可迭代序列效应系统程序设计语言与系统学报10.1145/345027243:1(1-79)网上发布日期:2021年4月

    视图选项

    查看选项

    PDF格式

    以PDF文件查看或下载。

    PDF格式

    电子阅读器

    使用联机查看电子阅读器.

    电子阅读器

    获取访问权限

    登录选项

    完全访问权限

    媒体

    数字

    其他

    桌子

    分享

    分享

    共享此出版物链接

    在社交媒体上分享