跳到主要内容
10.1145/3236950.3236953其他会议文章/章节视图摘要出版物页面ppdp(ppdp)会议记录会议集合
研究论文

逻辑程序设计的隐式参数

出版:2018年9月3日 出版历史
  • 获取引文提醒
  • 摘要

    隐式参数允许程序员从函数调用中省略某些参数,并由编译器根据其类型自动推断这些参数。在每个调用位置,编译器根据隐式参数的声明类型和当前隐式范围内的绑定来确定隐式参数值。程序员通过两种方式控制此机制:向隐式范围添加绑定,或显式提供函数调用的隐式参数。
    隐式参数来自函数和面向对象语言,如Haskell和Scala。近年来,越来越多的语言增加了对隐式参数的支持,包括Agda、Coq和Idris。隐式参数作为一系列语言功能(如类型类、功能和效果系统、软件事务内存、宏等)的基础发挥了重要作用。
    本文提出了一种基于类型化Horn子句的逻辑编程语言(如Datalog和Prolog)的隐式参数设计。我们说明了隐式参数的有用性,并说明了它们如何在很大程度上支持逻辑编程。我们探讨了函数语言和逻辑语言中隐式参数之间的一些差异。

    工具书类

    [1]
    Peter Alvaro、William R Marczak、Neil Conway、Joseph M Hellerstein、David Maier和Russell Sears。2011.Dedalus:时空数据记录。在重新加载的数据日志中。
    [2]
    马丁·布拉文波尔和亚尼斯·斯马拉格达基斯。2009年,严格声明复杂点分析规范。程序中。面向对象编程、系统、语言和应用(OOPSLA)。
    [3]
    内森·布朗森(Nathan G Bronson)、哈桑·查菲(Hassan Chafi)和昆勒·奥卢科顿(Kunle Olukotun)。2010年,CCSTM:Scala的基于库的STM。程序中。Scala研讨会(Scala)。
    [4]
    尤金·布尔马科。2013.Scala宏:让我们的力量结合!:关于富语法和静态类型如何与元编程一起工作。程序中。Scala研讨会(Scala)。
    [5]
    多米尼克·德弗里斯和弗兰克·皮森。2011.类型类的优点:Agda中的实例参数。程序中。函数式编程国际会议(ICFP)。
    [6]
    菲利普·哈勒(Philipp Haller)和亚历克斯·洛科(Alex Loiko)。2016.LaCasa:Scala中的轻量级亲和力和对象功能。程序中。面向对象编程、系统、语言和应用(OOPSLA)。
    [7]
    马克·琼斯。1999.探索基于类型的隐式参数化的设计空间。技术报告。俄勒冈州研究生院。
    [8]
    Jeffrey R Lewis、John Launchbury、Erik Meijer和Mark B Shields。2000.隐式参数:具有静态类型的动态作用域。程序中。程序设计语言原理(POPL)。
    [9]
    Magnus Madsen、Ming-Ho Yee和Ondřej Lhoták。2016.从Datalog到Flix:格上固定点的声明语言。程序中。编程语言设计与实现(PLDI)。
    [10]
    阿德里亚·摩尔(Adrian Moors)、蒂亚克·隆普夫(Tiark Rompf)、菲利普·哈勒(Philipp Haller)和马丁·奥德斯基(Martin Odersky)。2012.Scala-Virtualized。在部分评估和程序操作(PEPM)中。
    [11]
    Bruno CdS Oliveira、Adriaan Moors和Martin Odersky。2010.将类作为对象和隐式类型。程序中。面向对象编程、系统、语言和应用(OOPSLA)。
    [12]
    Bruno CdS Oliveira、Tom Schrijvers、Wontae Choi、Wonchan Lee和Kwangkeun Yi。2012.隐式微积分:泛型编程的新基础。程序中。编程语言设计与实现(PLDI)。
    [13]
    利奥·奥斯瓦尔德(Leo Osvald)、格里戈里·埃瑟特尔(Grégory Essertel)、西伦·吴(Xilun Wu)、利利亚姆一世(Lilliam I González Alayón)和蒂亚克·隆普夫(Tiark Rompf)。2016年,绅士化走得太远了?经济实惠的二级趣味价值和(协同)效果。程序中。面向对象编程、系统、语言和应用(OOPSLA)。
    [14]
    Yannis Smaragdakis、Martin Bravenboer和Ondrej Lhoták。2011.选择好你的上下文:理解对象敏感性。程序中。程序设计语言原理(POPL)。
    [15]
    佐尔坦·索莫吉(Zoltan Somogyi)、弗格斯·亨德森(Fergus Henderson)和托马斯·康韦(Thomas Conway)。1996年,Mercury的执行算法,一种高效的纯声明逻辑编程语言。《逻辑程序设计杂志》(1996)。
    [16]
    佐尔坦·索莫吉(Zoltan Somogyi)、费格斯·J·亨德森(Fergus J Henderson)和托马斯·查尔斯·康韦(Thomas Charles Conway)。1995年,Mercury,一种高效的纯声明逻辑编程语言。(1995).
    [17]
    Jean Yang等人,2015年。使用策略不确定性编程防止信息泄漏。博士论文。麻省理工学院。

    引用人

    查看全部
    • (2022)Flix编程语言的原理2022年ACM SIGPLAN关于编程和软件的新思想、新范式和思考的国际研讨会会议记录10.1145/3563835.3567661(112-127)在线发布日期:2022年11月29日

    建议

    评论

    Prahladavaradan Sampath公司

    编程的艺术在于构建简洁、优雅、高效的程序,最重要的是,这些程序能够被他人阅读和理解。软件工程师使用许多工具使代码可读,例如,设计良好的类型、表达性名称和体系结构原则,如DRY和SOLID。这些工具反过来又受到语言功能(如强类型系统)的支持,以及编程语言和集成开发环境(IDE)中的功能(如代码导航、类型自动推断、代码的在线静态分析等)的支持。本文阐述了这样一个微观特征:简化函数和过程的参数列表。在大多数现代编程语言中,函数(或更一般的关系)和过程是最小的构造单位。任何从业者都会熟悉如何最大限度地重用过程的算法部分,同时最小化过程的接口(或参数)这一难题。语言功能(如层次化名称范围和继承)为语言设计的这一方面提供了不同的设计点。隐式参数是一种直接解决参数列表问题的语言功能。在许多实际情况下,传递给过程的参数与调用过程的上下文之间有很强的相关性。隐式参数旨在自动检测程序结构中的这些相关性,并自动将参数推理到过程调用。例如,当调用过程时,在过程调用的上下文中通常只有一个特定类型的变量可见,当程序使用DRY和SOLID等原理进行了良好的结构化时,情况尤其如此。本文讨论了在控制和信息流的概念是隐含的逻辑编程语言上下文中,将参数推断为谓词的问题。作者提供了在逻辑程序上下文中推断参数问题的简单形式化,以及一个非常有吸引力的解决方案,该解决方案涉及一些推理规则,作为编译器/解释器中的预处理步骤应该很容易实现。它们还形式化了一组用于评估隐式参数方案的属性:类型安全性、一致性、确定性和可预测性,并表明其公式具有这些属性。将本文提供的形式化与其他语言中的隐式参数方案进行比较是很有意思的——C++中的默认参数、Scala中的隐含参数以及OCaml中的命名参数和默认参数都属于这一类。一个更雄心勃勃的努力是深入探索Haskell中类型类与C++中名称解析的关系;这些语言特性在实践中得到了验证,为大规模编程提供了基础设施,而本文可以为将这些特性导入逻辑编程语言提供方法基础。

    访问计算机文献的关键评论在这里

    成为评论员计算评论。

    评论

    信息和贡献者

    问询处

    发布于

    封面图片ACM其他会议
    PPDP’18:第20届声明性编程原则与实践国际研讨会论文集
    2018年9月
    306页
    国际标准图书编号:9781450364416
    内政部:10.1145/3236950
    允许制作本作品的全部或部分数字或硬拷贝供个人或课堂使用,但不收取任何费用,前提是复制品的制作或分发不是为了盈利或商业利益,并且复制品在首页注明本通知和完整引文。必须尊重ACM以外的其他人对本作品组成部分的版权。允许用信用证进行摘要。要以其他方式复制或重新发布,在服务器上发布或重新发布到列表,需要事先获得特定许可和/或付费。从请求权限[电子邮件保护]

    合作中

    出版商

    计算机协会

    美国纽约州纽约市

    出版历史

    出版:2018年9月3日

    权限

    请求对此文章的权限。

    检查更新

    作者标记

    1. 隐式参数
    2. 类型化逻辑程序设计

    限定符

    • 研究文章
    • 研究
    • 推荐有限公司

    会议

    2018年PPDP

    接受率

    PPDP’18论文接受率39份中的22份,56%;
    486份提交文件的总体接受率为230,47%

    贡献者

    其他指标

    文献计量学和引文

    文献计量学

    文章指标

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

    其他指标

    引文

    引用人

    查看全部
    • (2022)Flix程序设计语言的原理2022年ACM SIGPLAN关于编程和软件的新思想、新范式和思考的国际研讨会会议记录10.1145/3563835.3567661(112-127)在线发布日期:2022年11月29日

    视图选项

    获取访问权限

    登录选项

    完全访问权限

    视图选项

    PDF格式

    以PDF文件查看或下载。

    PDF格式

    电子阅读器

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

    电子阅读器

    媒体

    数字

    其他

    桌子

    分享

    分享

    共享此出版物链接

    在社交媒体上分享