研究论文 在上共享 逻辑程序设计的隐式参数作者:马格纳斯 马德森和Ondřej公司 洛塔克作者信息和声明PPDP’18:第20届声明式编程原理与实践国际研讨会论文集2018年9月文章编号:14,页数1-14https://doi.org/10.1145/3236950.3236953出版:2018年9月3日 出版历史 获取引文提醒新增引文提醒!此警报已成功添加,将发送到:只要您选择的记录被引用,您就会收到通知。新引文提醒!拜托登录到您的帐户 获取访问权限目录PPDP’18:第20届声明性编程原则与实践国际研讨会论文集逻辑程序设计的隐式参数页1-14以前的文章带有运行时检查的程序的静态性能保证上一个下一篇文章阿贝拉证明助手中的图解多态性下一步摘要工具书类信息和贡献者文献计量学和引文获取访问权限工具书类媒体桌子分享摘要隐式参数允许程序员从函数调用中省略某些参数,并由编译器根据其类型自动推断这些参数。在每个调用位置,编译器根据隐式参数的声明类型和当前隐式范围内的绑定来确定隐式参数值。程序员通过两种方式控制此机制:向隐式范围添加绑定,或显式提供函数调用的隐式参数。隐式参数来自函数和面向对象语言,如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年。使用策略不确定性编程防止信息泄漏。博士论文。麻省理工学院。谷歌学者 引用人查看全部马德森MScholliers C公司歌手J(2022)Flix编程语言的原理2022年ACM SIGPLAN关于编程和软件的新思想、新范式和思考的国际研讨会会议记录10.1145/3563835.3567661(112-127)在线发布日期:2022年11月29日https://dl.acm.org/doi/10.1145/3563835.3567661 索引术语 逻辑程序设计的隐式参数软件及其工程软件符号和工具通用编程语言语言类型约束和逻辑语言计算理论逻辑约束和逻辑编程 建议 简单:隐式函数类型的基础和应用 理解一个程序需要理解它的上下文;依赖、配置甚至实现都是上下文的形式。现代编程语言和定理证明程序提供了一系列构造来隐式定义上下文。。。阅读更多信息具有谓词层次结构的顺序逻辑程序设计 排序逻辑已被形式化为一阶逻辑,其中包含排序项,排序是为了构建层次结构(称为排序层次结构)。这些分类逻辑为结构知识提供了有用的表达式和推理方法。。。阅读更多信息隐式参数:静态类型的动态范围POPL'00:第27届ACM SIGPLAN-SIGACT编程语言原理研讨会会议记录 本文介绍了一种称为隐式参数,它在静态类型的Hindley-Milner框架中提供了动态范围内的变量。隐式参数在词汇上不同于常规标识符,并且受。。。阅读更多信息 评论 审核人:Prahladavaradan Sampath公司 编程的艺术在于构建简洁、优雅、高效的程序,最重要的是,这些程序能够被他人阅读和理解。软件工程师使用许多工具使代码可读,例如,设计良好的类型、表达性名称和体系结构原则,如DRY和SOLID。这些工具反过来又受到语言功能(如强类型系统)的支持,以及编程语言和集成开发环境(IDE)中的功能(如代码导航、类型自动推断、代码的在线静态分析等)的支持。本文阐述了这样一个微观特征:简化函数和过程的参数列表。在大多数现代编程语言中,函数(或更一般的关系)和过程是最小的构造单位。任何从业者都会熟悉如何最大限度地重用过程的算法部分,同时最小化过程的接口(或参数)这一难题。语言功能(如层次化名称范围和继承)为语言设计的这一方面提供了不同的设计点。隐式参数是一种直接解决参数列表问题的语言功能。在许多实际情况下,传递给过程的参数与调用过程的上下文之间有很强的相关性。隐式参数旨在自动检测程序结构中的这些相关性,并自动将参数推理到过程调用。例如,当调用过程时,在过程调用的上下文中通常只有一个特定类型的变量可见,当程序使用DRY和SOLID等原理进行了良好的结构化时,情况尤其如此。本文讨论了在控制和信息流的概念是隐含的逻辑编程语言上下文中,将参数推断为谓词的问题。作者提供了在逻辑程序上下文中推断参数问题的简单形式化,以及一个非常有吸引力的解决方案,该解决方案涉及一些推理规则,作为编译器/解释器中的预处理步骤应该很容易实现。它们还形式化了一组用于评估隐式参数方案的属性:类型安全性、一致性、确定性和可预测性,并表明其公式具有这些属性。将本文提供的形式化与其他语言中的隐式参数方案进行比较是很有意思的——C++中的默认参数、Scala中的隐含参数以及OCaml中的命名参数和默认参数都属于这一类。一个更雄心勃勃的努力是深入探索Haskell中类型类与C++中名称解析的关系;这些语言特性在实践中得到了验证,为大规模编程提供了基础设施,而本文可以为将这些特性导入逻辑编程语言提供方法基础。 访问计算机文献的关键评论在这里成为评论员计算评论。 评论 Please enable JavaScript to view thecomments powered by Disqus. 信息和贡献者问询处发布于 PPDP’18:第20届声明性编程原则与实践国际研讨会论文集2018年9月306页国际标准图书编号:9781450364416内政部:10.1145/3236950会议主席:大卫·萨贝尔,项目主席:彼得·蒂曼 版权所有©2018 ACM。允许制作本作品的全部或部分数字或硬拷贝供个人或课堂使用,但不收取任何费用,前提是复制品的制作或分发不是为了盈利或商业利益,并且复制品在首页注明本通知和完整引文。必须尊重ACM以外的其他人对本作品组成部分的版权。允许用信用证进行摘要。要以其他方式复制或重新发布,在服务器上发布或重新发布到列表,需要事先获得特定许可和/或付费。从请求权限[电子邮件保护]合作中SIGPLAN:ACM编程语言特别兴趣小组歌德大学:法兰克福歌德大学出版商计算机协会美国纽约州纽约市出版历史出版:2018年9月3日权限请求对此文章的权限。请求权限检查更新作者标记隐式参数类型化逻辑程序设计限定符研究文章研究推荐有限公司会议2018年PPDPPPDP’18:第20届声明性编程原则与实践国际研讨会2018年9月3-5日德国法兰克福 接受率PPDP’18论文接受率39份中的22份,56%;486份提交文件的总体接受率为230,47%更多 贡献者 其他指标查看文章指标文献计量学和引文文献计量学 文章指标 1引文总数查看引文92总下载次数下载次数(过去12个月)5下载次数(最近6周)0 其他指标查看作者指标引文 引用人查看全部马德森MScholliers C公司歌手J(2022)Flix程序设计语言的原理2022年ACM SIGPLAN关于编程和软件的新思想、新范式和思考的国际研讨会会议记录10.1145/3563835.3567661(112-127)在线发布日期:2022年11月29日https://dl.acm.org/doi/10.1145/3563835.3567661 视图选项获取访问权限 登录选项检查您是否可以通过登录凭据或您的机构访问本文。登录完全访问权限获取此出版物 视图选项 PDF格式以PDF文件查看或下载。PDF格式 电子阅读器使用联机查看电子阅读器.电子阅读器媒体数字其他桌子分享分享共享此出版物链接复制链接已复制!复制失败。在社交媒体上分享Linkedin公司重新编辑电子邮件附属公司马格纳斯 马德森丹麦奥尔堡大学查看个人资料Ondřej公司 洛塔克加拿大滑铁卢大学查看个人资料