跳到主要内容
研究论文

递归模块的语法类型系统

出版:2011年10月22日 出版历史
  • 获取引文提醒
  • 摘要

    ML型递归模块的实用类型系统应解决至少两个技术挑战。首先,它需要解决双重视觉问题,这是指递归模块的外部视图和内部视图之间的不一致。其次,它需要克服实际可判定性和表示性之间的紧张关系,这是由于模块之间递归导致的循环类型定义的潜在存在所引起的。尽管在以前的建议中,类型系统解决了双重视觉问题,并且也是可判定的,但它们未能对递归模块的常见模式进行类型检查,例如函子不动点,这些对于模块系统的表达能力和递归模块的模块化开发至关重要。本文提出了一种新的递归模块类型系统,解决了双重视觉问题,并对包括函子不动点在内的递归模块的常见模式进行了类型检查。首先,我们设计了一个具有基于弱双相似性的类型等价的类型系统,它不适合一般的实际实现,但可以容纳广泛的循环类型定义。然后,我们使用基于类型规范化的类型等价来识别一个实际可实现的片段,该片段具有足够的表达能力,可以对递归模块的典型使用进行类型检查。我们的方法是纯语法的,类型系统的定义可以在实际实现中使用。

    工具书类

    [1]
    安宁。https://forge.ocamlcore.org/projects/amthing/。
    [2]
    莫斯科ML。网址:http://www.itu.dk/~sestoft/mosml.html。
    [3]
    OCaml公司。http://caml.inria.fr/ocaml/。
    [4]
    R.M.Amadio和L.Cardelli。子类型递归类型。美国计算机学会程序设计语言与系统汇刊,15(4):575--631993年9月。
    [5]
    G.Bracha和G.Lindstrom。模块化符合继承性。《1992年国际计算机语言会议记录》,第282-290页。IEEE计算机学会,1992年。
    [6]
    K.Crary、R.Harper和S.Puri。什么是递归模块?《PLDI’99:ACM SIGPLAN 1999年编程语言设计与实现会议记录》,第50-63页,1999年。
    [7]
    D.Dreyer。递归类型生成性。函数编程杂志,17(4-5):433-4712007。
    [8]
    D.Dreyer。递归模块的类型系统。在ICFP’07:第12届ACM SIGPLAN函数编程国际会议记录,第289-302页,2007年。
    [9]
    D.Dreyer。理解和发展ML模块系统。2005年5月,美国宾夕法尼亚州匹兹堡卡内基梅隆大学博士论文。
    [10]
    D.Dreyer和A.Rossberg。混合ML模块系统。在ICFP’08:第13届ACM SIGPLAN函数式编程国际会议的会议记录,第307-320页,2008。
    [11]
    D.Duggan和C.Sourelis。混合模块。1996年,《ICFP’96:第一届ACM SIGPLAN函数编程国际会议记录》,第262-273页。
    [12]
    M.Flatt和M.Felleisen。单位:HOT语言的酷模块。PLDI’98:ACM SIGPLAN 1998编程语言设计与实现会议论文集,第236页至第248页,1998年。
    [13]
    J.加里格。私有行:抽象未命名的行。《APLAS’06:第四届亚洲编程语言与系统研讨会论文集》,第44-60页。Springer-Verlag,2006年。
    [14]
    J.Garrigue和K.Nakata。递归嵌套模块的路径解析。可在http://www.math.nagoya-u.ac.jp/~garrigue/paperss/,2010年。
    [15]
    R.Harper和M.Lillibridge。一种具有共享的高阶模块的类型论方法。载于POPL’94:第21届ACM SIGPLAN-SIGCT编程语言原理研讨会论文集,第123-1371994页。
    [16]
    R.Harper、J.C.Mitchell和E.Moggi。高阶模和相位差。在POPL'90:第17届ACM SIGPLAN-SIGACT编程语言原理研讨会论文集,第341-354页,1990年。
    [17]
    R.Harper和B.C.Pierce。ML型模块系统的设计考虑。编者B.C.Pierce,《类型和编程语言高级主题》,第8章。麻省理工学院出版社,2005年。
    [18]
    X.勒罗伊。清单类型、模块和单独编译。1994年POPL’94:第21届ACM SIGPLAN-SIGACT编程语言原理研讨会论文集,第109-122页。
    [19]
    X.勒罗伊。适用函子和完全透明的高阶模。1995年第22届ACM SIGPLAN-SIGACT编程语言原理研讨会论文集,第142-153页。
    [20]
    X.勒罗伊。类型生成和共享的句法理论。函数编程杂志,6(05):667-6981996。
    [21]
    X.勒罗伊。2003年Objective Caml中递归模块的提案。可在http://caml.inia.fr/about/papers.en.html。
    [22]
    D.麦昆。《84年LFP标准ML模块:1984年ACM LISP与函数编程研讨会论文集》,198-207页,1984年。
    [23]
    R.Milner。通信和移动系统:pi-calculus。剑桥大学出版社,1999年。
    [24]
    R.Milner、M.Tofte、R.Harper和D.MacQueen。标准ML的定义(修订版)。麻省理工学院出版社,1997年。
    [25]
    B.蒙塔古。使用核心语言中的一流模块进行编程,包括子类型、单例类型和开放存在类型。2010年12月,法国帕莱索埃科尔理工学院博士论文。
    [26]
    B.蒙塔古和D.雷米。使用开放存在类型在模块中建模抽象类型。在POPL'09:第36届ACM SIGPLAN-SIGACT编程语言原理研讨会会议记录,第354-365页,2009年。
    [27]
    K.Nakata。错误报告,编号0003674。http://caml.inria.fr/mantis/view.php?id=3674, 2005.
    [28]
    K.Nakata和J.Garrigue。用于编程的递归模块。在ICFP'06:第十一届ACM SIGPLAN函数式编程国际会议的会议记录中,第74-862006页。
    [29]
    K.Nakata和T.Uustalu。While与交互式I/O的恢复、弱相似性和大步语义:混合归纳共归纳的练习。2010年,《SOS’10:结构操作语义第七次研讨会》,第57-75页。
    [30]
    M.Odersky、V.Cremet、C.Röckl和M.Zenger。具有从属类型的对象的名义理论。《ECOOP’03:第17届欧洲面向对象编程会议记录》,第201-224页。Springer-Verlag,2003年。
    [31]
    C.冈崎。纯功能数据结构。剑桥大学出版社,1998年。
    [32]
    S.Owens和M.Flatt。从结构和函子到模块和单元。在ICFP'06:第十一届ACM SIGPLAN函数编程国际会议的会议记录中,第87-982006页。
    [33]
    C.V.Russo。标准ML的一级结构。《北欧计算杂志》,7(4):348-3742000。
    [34]
    C.V.Russo。标准ML的递归结构。在ICFP'01:第六届ACM SIGPLAN函数编程国际会议的会议记录,第50-612001页。
    [35]
    N.Scharli、S.Ducasse、O.Nierstrasz和A.Black。特征:可组合的行为单位。《ECOOP’03:第17届欧洲面向对象编程会议记录》,第248-274页。Springer-Verlag,2003年。
    [36]
    G.塞尼泽格斯。确定性下推自动机的等价问题是可判定的。《1997年ICALP:第24届国际自动化、语言和编程学术讨论会论文集》,第671-681页。Springer-Verlag,1997年。
    [37]
    Z.邵。具有完全同步签名的透明模块。《ICFP’99:第四届ACM SIGPLAN函数编程国际会议论文集》,第220-232页,1999年。
    [38]
    所罗门先生。带有类型参数的类型定义(扩展抽象)。《POPL’78:第五届ACM编程语言原理研讨会论文集》,第31-38页,1978年。完整版本作为技术报告DAIMI PB-54提供。
    [39]
    C.A.Stone和R.Harper。用单例类型确定语言中的类型等价性。在POPL'00:第27届ACM SIGPLAN-SIGACT编程语言原理研讨会会议记录,第214-227页,2000年。

    建议

    评论

    信息和贡献者

    问询处

    发布于

    封面图片ACM SIGPLAN注意事项
    ACM SIGPLAN通知 第46卷第10期
    2011年OOPSLA
    2011年10月
    1063页
    国际标准编号:0362-1340
    EISSN公司:1558-1160
    DOI(操作界面):10.1145/2076021
    期刊目录
    • 封面图片ACM会议
      OOPSLA’11:2011年ACM面向对象编程系统语言和应用国际会议记录
      2011年10月
      1104页
      国际标准图书编号:9781450309400
      DOI(操作界面):10.1145/2048066
    如果复制品不是为了盈利或商业利益而制作或分发的,并且复制品的第一页载有本通知和完整引文,则允许免费制作本作品的全部或部分数字或硬拷贝以供个人或课堂使用。必须尊重ACM以外的其他人对本作品组成部分的版权。允许用信用证进行摘要。要以其他方式复制或重新发布,在服务器上发布或重新发布到列表,需要事先获得特定许可和/或付费。从请求权限[电子邮件保护]

    出版商

    计算机协会

    美国纽约州纽约市

    出版历史

    出版:2011年10月22日
    在SIGPLAN中发布体积46,问题10

    检查更新

    作者标记

    1. 抽象类型
    2. 模块
    3. 递归
    4. 类型系统
    5. 弱互模拟

    限定符

    • 研究文章

    贡献者

    其他指标

    文献计量学和引文

    文献计量学

    文章指标

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

    其他指标

    引文

    视图选项

    获取访问权限

    登录选项

    完全访问权限

    查看选项

    PDF格式

    以PDF文件查看或下载。

    PDF格式

    电子阅读器

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

    电子阅读器

    媒体

    数字

    其他

    桌子

    分享

    分享

    共享此出版物链接

    在社交媒体上分享