×

Clojure的实用可选类型。 (英语) Zbl 1335.68025号

Peter Thiemann(编辑),《编程语言和系统》。2016年4月2日至8日,作为欧洲软件理论与实践联合会议的一部分,在荷兰埃因霍温举行了第25届欧洲编程研讨会,即2016年ESOP。诉讼程序。柏林:施普林格出版社(ISBN 978-3-662-49497-4/pbk;978-3-562-49498-1/电子书)。计算机科学讲座笔记9632,68-94(2016)。
概述:Typed Clojure是Clojure的可选类型系统,Clojure在Lisp家族中是一种面向JVM的动态语言。Typed Clojure使Clojure程序员能够在Clojure世界中通过静态类型检查对其代码的正确性获得更大的信心,并在Clojur社区中获得了大量采用。Typed Clojure重新利用了Typed Racket的出现类型,这是一种对谓词测试进行静态推理的方法,还包括几个新的类型系统功能来处理现有的Clojure习惯用法。
在本文中,我们描述了类型化Clojure并介绍了这些类型系统扩展,重点介绍了Clojure中广泛使用的三个特性。首先,多方法提供了可扩展的操作,其Clojure语义与底层的事件类型框架有着惊人的协同作用。其次,Java互操作性是Clojure任务的核心,但也带来了诸如普遍存在的null等挑战;类型化Clojure处理Java互操作性,同时确保类型化程序中不存在null-pointer异常。第三,Clojure程序员习惯性地为数据结构使用不可变字典;Typed Clojure使用多种形式的异构字典类型来处理这一问题。我们提供了Typed Clojure类型系统的正式模型,其中包含这些功能和其他功能,并提供了可靠性证明。此外,Typed Clojure现在被许多使用Clojure的公司和开发人员使用,我们对两个重要的代码库中类型系统功能的使用进行了定量分析。
关于整个系列,请参见[Zbl 1333.68019号].

MSC公司:

68甲15 编程语言理论
68号30 软件工程的数学方面(规范、验证、度量、需求等)
PDF格式BibTeX公司 XML格式引用

参考文献:

[1] Allende,E.,Callau,O.,Fabry,J.,Tanter,E。,Denker,M.:Smalltalk的渐进式打字。科学。计算。程序。96, 52–69 (2014) ·doi:10.1016/j.scico.2013.06.006
[2] Bonnaire Sergeant,A.:投稿人,核心。打字。https://github.com/clojure/core.typed
[3] Cardelli,L.,Mitchell,J.C.:记录操作。数学。结构。计算。科学。1, 3–48 (1991) ·Zbl 0727.68020号 ·doi:10.1017/S0960129500000049
[4] Chambers,C.:《Cecil中面向对象的多方法》。摘自:《经合组织会议记录》(1992年)·doi:10.1007/BFb0053029
[5] Chambers,C.,Leavens,G.T.:多方法的类型检查和模块。In:程序。OOPSLA(1994)·数字对象标识代码:10.1145/191081.191083
[6] Chugh,R.、Herman,D.、Jhala,R.:JavaScript的依赖类型。摘自:OOPSLA会议记录(2012年)·doi:10.1145/2384616.2384659
[7] CircleCI:CircleCI。https://circleci.com
[8] CircleCI:为什么我们支持Typed Clojure,你也应该支持!(2013年9月)。http://blog.circleci.com/supporting-typed-clojure/
[9] 圆形CI;O'Morain,M.:为什么我们不再使用core.typed(2015年9月)。http://blog.circleci.com/why-were-no-longer-using-core-typed/
[10] 脸书:黑客语言规范。技术报告,脸书(2014)
[11] Facebook:流语言规范。技术报告,脸书(2015)
[12] Harper,R.,Pierce,B.:基于对称级联的记录演算。在:持久性有机污染物公约会议记录(1991年)·数字对象标识代码:10.1145/99583.99603
[13] Hickey,R.:Clojure编程语言。摘自:DLS会议记录(2008年)·数字对象标识代码:10.1145/1408681.1408682
[14] Hickey,R.:Clojure序列文件(2015年2月)。http://clojure.org/sequences网站
[15] Lehtosalo,J.:我的。网址:http://mypy-lang.org/
[16] Lerner,B.S.,Politz,J.G.,Guha,A.,Krishnamurthi,S.:TeJaS:为JavaScript改造类型的系统。摘自:DLS 2013,第九届动态语言研讨会论文集,第1-16页。ACM,美国纽约州纽约市(2013年)。http://doi.acm.org/10.1145/2508168.2508170 ·doi:10.1145/2508168.2508170
[17] Lucassen,J.M.,Gifford,D.K.:多晶效应系统。摘自:POPL会议记录(1988年)·数字对象标识代码:10.1145/73560.73564
[18] Maidl,A.M.,Mascarenhas,F.,Ierusalimschy,R.:类型Lua:Lua的可选类型系统。摘自:《迪拉学报》(2014)·doi:10.1145/2617548.2617553
[19] Microsoft:Typescript语言规范。技术报告1.4版,微软(2014)
[20] Millstein,T.,Chambers,C.:模块化静态类型多重方法。In:信息与计算。第279-303页。Springer-Verlag(2002)·Zbl 1012.68043号 ·doi:10.1006/inco.2002.3103
[21] Odersky,M.、Cremet,V.、Dragos,I.、Dubochet,G.、Emir,B.、McDirmid,S.、Micheloud,S.,Mihaylov,N.、Schinz,M.,Stenman,E.、Spoon,L.、Zenger,M.等人:Scala编程语言概述,第二版,技术报告,瑞士洛桑EPFL(2006)
[22] Strickland,T.S.,Tobin-Hochstadt,S.,Felleisen,M.:实用可变整体多态性。收录:Castagna,G.(编辑)ESOP 2009。LNCS,第5502卷,第32–46页。斯普林格,海德堡(2009)·兹比尔12346.8061 ·doi:10.1007/978-3-642-00590-93
[23] Tobin Hochstadt,S.,Felleisen,M.:类型化方案的设计和实现。摘自:POPL会议记录(2008)·Zbl 1295.68055号 ·doi:10.145/1328438.1328486
[24] Tobin-Hochstadt,S.,Felleisen,M.:非类型化语言的逻辑类型。In:ICFP 2010,ICFP会议记录(2010)·Zbl 1323.68083号 ·doi:10.145/1863543.1863561
[25] Vitousek,M.M.,Kent,A.M.,Siek,J.G.,Baker,J.:Python渐进式键入的设计和评估。In:程序。DLS(2014)·数字对象标识代码:10.1145/2661088.2661101
[26] Wand,M.:记录串联和多重继承的类型推理(1989)·Zbl 0716.68017号
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。