×

可见类型应用程序。 (英语) Zbl 1335.68031号

Peter Thiemann(编辑),《编程语言和系统》。2016年4月2日至8日,作为欧洲软件理论与实践联合会议的一部分,在荷兰埃因霍温举行了第25届欧洲编程研讨会,即2016年ESOP。诉讼程序。柏林:施普林格出版社(ISBN 978-3-662-49497-4/pbk;978-3-562-49498-1/电子书)。计算机科学讲座笔记9632,229-254(2016)。
总结:Hindley-Milner(HM)类型系统自动推断使用多态函数的类型。在HM中,推断的类型是明确的,并且每个表达式都有一个主类型。类型注释使HM与不可能进行完整类型推断的扩展兼容,例如高秩多态性和类型级函数。然而,程序员不能使用注释显式地为多态函数提供类型参数,因为HM需要推断类型实例化。
我们描述了HM的一个扩展,它允许可视类型应用。我们的扩展需要一种新的类型推理算法,但它的声明式表示是对HM的简单扩展。我们证明了我们的扩展系统是HM的保守扩展,并允许主类型。然后,我们将我们的方法扩展到具有双向类型检查的高等级类型系统。我们已经在Glasgow Haskell编译器中实现了这个系统,并展示了我们的方法在复杂类型系统功能存在的情况下是如何扩展的。
有关整个系列,请参见[Zbl 1333.68019号].

MSC公司:

68甲18 函数编程和lambda演算
PDF格式BibTeX公司 XML格式引用
全文: 内政部 链接

参考文献:

[1] Brady,E.:Idris,一种通用的依赖类型编程语言:设计与实现。J.功能。掠夺。23, 552–593 (2013) ·Zbl 1295.68059号 ·doi:10.1017/S095679681300018X
[2] Buiras,P.、Vytiniotis,D.、Alejandro Russo,H.:在Haskell中混合静态和动态类型以实现信息流控制。摘自:国际函数编程会议,ICFP 2015。ACM(2015)·Zbl 1360.68316号 ·doi:10.1145/2784731.2784758
[3] Chakravarty,M.M.T.,Keller,G.,Peyton Jones,S.:相关类型同义词。摘自:函数式编程国际会议,ICFP 2005。ACM(2005)·Zbl 1302.68055号 ·doi:10.1145/1090189.1086397
[4] Chakravarty,M.M.T.,Keller,G.,Peyton Jones,S.,Marlow,S.:与类别相关的类型。In:ACM SIGPLAN-SIGACT编程语言原理研讨会(2005年)·数字对象标识代码:10.1145/1047659.1040306
[5] Clément,D.,Despeyroux,T.,Kahn,G.,Joélle Despeyroux,A.:简单应用语言:Mini-ML.In:LISP和函数编程会议,LFP 1986。ACM(1986)
[6] Coq开发团队。考证助理参考手册。LogiCal项目。8.0版(2004)。http://coq.inia.fr
[7] Damas,L.:编程语言中的类型赋值。爱丁堡大学博士论文(1985年)
[8] Damas,L.,Milner,R.:功能程序的主要类型模式。摘自:编程语言原理研讨会,POPL 1982。ACM(1982)·doi:10.1145/582153.582176
[9] Dreyer,D.,Blume,M.:模块化程序的主要类型方案。摘自:De Nicola,R.(编辑)ESOP 2007。LNCS,第4421卷,第441-457页。斯普林格,海德堡(2007)·兹比尔1187.68149 ·doi:10.1007/978-3-540-71316-6_30
[10] Dunfield,J.,Krishnaswami,N.R.:对高秩多态性进行全面而简单的双向类型检查。摘自:2013年国际功能编程会议。ACM(2013)·Zbl 1323.68204号 ·doi:10.1145/2500365.2500582
[11] Eisenberg,R.A.,Vytiniotis,D.,Peyton Jones,S.,Weirich,S.:具有重叠方程的封闭型族。收录于:《程序设计语言原理》,POPL 2014。ACM(2014)·Zbl 1284.68130号 ·doi:10.1145/2535838.2535856
[12] Eisenberg,R.A.、Weirich,S.、Ahmed,H.:可见类型应用(扩展版)(2015)。http://www.seas.upenn.edu/瑞典语/论文/type-app-extended.pdf·Zbl 1335.68031号
[13] 辛德利,J.R.:组合逻辑中对象的主要类型模式。事务处理。美国数学。Soc.146,29-60(1969年)·Zbl 0196.01501号
[14] Le Botlan,D.、Rémy,D.:\[{\mathrm ML}^F\]ML F:将ML提升到系统F的能力。In:函数编程国际会议。ACM(2003)
[15] Marlow,S.(编辑):Haskell语言报告(2010年)
[16] 麦克布莱德:Agda-curious?主题演讲。日期:ICFP 2012(2012)·doi:10.1145/2364527.2364529
[17] McCracken,N.:具有隐式类型结构的程序的类型检查。收录:Kahn,G.,MacQueen,D.B.,Plotkin,G.(编辑)《数据类型的语义》。LNCS,第173卷,第301-315页。斯普林格,海德堡(1984)·Zbl 0579.68009号 ·doi:10.1007/3-540-13346-1_15
[18] Milner,R.:编程中的类型多态理论。J.计算。系统。科学。17, 348–375 (1978) ·Zbl 0388.68003号 ·doi:10.1016/0022-0000(78)90014-4
[19] Miquel,A.:结构的隐式演算。摘自:Abramsky,S.(编辑)TLCA 2001。LNCS,第2044卷,第344-359页。斯普林格,海德堡(2001)·兹伯利0981.03029 ·doi:10.1007/3-540-45413-6_27
[20] 诺雷尔,U。:基于依赖类型理论的实用编程语言。2007年9月,瑞典哥德堡SE-412 96查尔默斯理工大学计算机科学与工程系博士论文
[21] Odersky,M.,Läufer,K.:使用类型注释。摘自:编程语言原理研讨会,POPL 1996。ACM(1996)·数字对象标识代码:10.1145/237721.237729
[22] Peyton Jones,S.、Vytiniotis,D.、Weirich,S.和Washburn,G.:基于简单统一的GADT类型推断。摘自:函数编程国际会议,ICFP 2006。ACM(2006)·数字对象标识代码:10.1145/1160074.1159811
[23] Peyton Jones,S.、Vytiniotis,D.、Weirich,S.和Shields,M.:任意库类型的实用类型推断。J.函数。程序。17(1), 1–82 (2007) ·Zbl 1107.68030号 ·网址:10.1017/S0956796806006006034
[24] Pfenning,F.,Schürmann,C.:系统描述:Twelf-演绎系统的元逻辑框架。摘自:Ganzinger,H.(编辑)CADE 1999。LNCS(LNAI),第1632卷,第202-206页。斯普林格,海德堡(1999)·数字对象标识代码:10.1007/3-540-48660-7_14
[25] Pottier,F.,Rémy,D.:ML类型推理的本质。摘自:Pierce,B.C.(编辑)《类型和编程语言高级主题》,第387-489页。麻省理工学院出版社(2005)
[26] Syme,D.:F#2.0语言规范。Microsoft Research and the Microsoft Developer Division(2012年)。http://fsharp.org/specs/language-spec/2.0/FSharpSpec-2.0-April-2012.pdf
[27] Vytiniotis,D.,Peyton Jones,S.,Schrijvers,T.,Sulzmann,M.:具有局部假设的OutsideIn(X)模类型推理。J.功能。程序。21(4–5), 333–412 (2011) ·Zbl 1262.68034号 ·doi:10.1017/S095679681100098
[28] Wadler,P.,Blott,S.:如何减少特殊多态性。收录于:POPL,第60-76页。ACM(1989)·doi:10.1145/75277.75283
[29] Winant,T.,Devriese,D.,Piessens,F.,Schrijvers,T.:haskell的部分类型签名。收录:Flatt,M.,Guo,H.-F.(编辑)PADL 2014。LNCS,第8324卷,第17-32页。斯普林格,海德堡(2014)·doi:10.1007/978-3-319-04132-22
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。