跳到主要内容
10.1145/3551357.3551370交流会议文章/章节视图摘要出版物页面ppdp公司会议记录会议集合
研究论文

函数逻辑程序的一元实现

出版:2022年9月20日出版历史

摘要

函数逻辑语言是通过组合最重要的声明性特性进行编程的高级方法。它们从一小步的操作细节中抽象出来,这样程序员就可以专注于应用程序的逻辑方面。这得到了适当的评估战略的支持。函数编程中的需求驱动评估与逻辑编程中的非确定性相结合,以便在存在解或值时计算它们。这使程序员不必考虑操作策略对计算成功的影响,但这对语言实现者来说是一个挑战。非确定性需求驱动策略可能会重复未评估的表达式选择,从而重复计算工作。在最近的实现中,通过向被评估的表达式添加一种非确定性选择的记忆,解决了这个问题。由于这已经在命令式目标语言中实现,因此尚不清楚在Haskell这样的函数式编程环境中是否也支持这一点。本文通过将函数逻辑程序转换为一元表示来解决这一挑战。尽管这种转换不是新的,但我们提出了一种单元接口的实现,它支持非确定性分支中的存储。我们证明,我们的方法产生了一个有希望的性能,其性能优于当前的Curry编译器。

工具书类

  1. 安德烈亚斯·阿贝尔(Andreas Abel)、马金·本克(Marcin Benke)、安娜·波夫(Ana Bove)、约翰·休斯(John Hughes)和乌尔夫·诺雷尔(Ulf Norell)。2005.使用构造型理论验证Haskell程序。2005年ACM SIGPLAN Haskell研讨会论文集。美国纽约州纽约市ACM出版社,62-73。https://doi.org/10.1145/1088348.108355谷歌学者谷歌学者数字图书馆数字图书馆
  2. E.Albert、M.Hanus、F.Huch、J.Oliver和G.Vidal。2005.声明性多范式语言的操作语义。符号计算杂志40,1(2005),795–829。https://doi.org/10.1016/j.jsc.2004.01.001谷歌学者谷歌学者数字图书馆数字图书馆
  3. A.Alqaddoumi、S.Antoy、S.Fischer和F.Reck。2010年,Pull-Tab转型。程序中。第三届图形计算模型国际研讨会。在线出版,荷兰恩舍德,127-132。可在http://gcm2010.imag.fr/pages/gcm2010-preproceedings.pdf。谷歌学者谷歌学者
  4. S.Antoy。1997年。最佳非确定性函数逻辑计算。程序中。代数和逻辑程序设计国际会议(ALP’97)。斯普林格LNCS 1298,柏林,海德堡,16-30。https://doi.org/10.1007/BFb0027000谷歌学者谷歌学者交叉引用交叉引用
  5. S.Antoy。2001.基于构造函数的条件缩小。程序中。第三届国际ACM SIGPLAN声明性编程原则与实践会议(PPDP 2001)。美国纽约州纽约市ACM出版社,199-206。谷歌学者谷歌学者数字图书馆数字图书馆
  6. S.Antoy。2011年,《论拉削的正确性》,《逻辑程序设计的理论与实践》11,4-5(2011),713–730。https://doi.org/10.1017/S1471068411000263谷歌学者谷歌学者交叉引用交叉引用
  7. S.Antoy、R.Echahed和M.Hanus。2000.一项必要的缩小战略。《美国临床医学杂志》47,4(2000),776–822。https://doi.org/10.1145/347476.347484谷歌学者谷歌学者数字图书馆数字图书馆
  8. S.Antoy和M.Hanus。2000.将多Paradigm声明性程序编译为Prolog。程序中。联合系统前沿国际研讨会(FroCoS'2000)。斯普林格LNCS 1794,柏林,海德堡,171-185。https://doi.org/10.1007/10720084_12谷歌学者谷歌学者
  9. S.Antoy和M.Hanus。2005.函数模式的声明性编程。《基于逻辑的程序合成与转换国际研讨会论文集》(LOPSTR'05)。施普林格LNCS 3901,柏林,海德堡,6–22。https://doi.org/10.1007/111680093_2谷歌学者谷歌学者数字图书馆数字图书馆
  10. S.Antoy和M.Hanus。2006.函数逻辑程序中的重叠规则和逻辑变量。《第22届逻辑程序设计国际会议论文集》(ICLP 2006)。施普林格LNCS 4079,柏林,海德堡,87-101。https://doi.org/10.1007/11799573_9谷歌学者谷歌学者数字图书馆数字图书馆
  11. S.Antoy和M.Hanus。2009.设置功能逻辑编程的功能。在第11届ACM SIGPLAN国际声明性编程原则和实践会议(PPDP'09)的会议记录中。美国纽约州纽约市ACM出版社,73-82。https://doi.org/10.1145/1599410.1599420谷歌学者谷歌学者数字图书馆数字图书馆
  12. S.Antoy和M.Hanus。2010.功能逻辑编程。Commun公司。ACM 53,4(2010),74-85。https://doi.org/10.1145/1721654.1721675谷歌学者谷歌学者数字图书馆数字图书馆
  13. S.Antoy、M.Hanus、A.Jost和S.Libby。2020年,国际货币基金组织。在声明性编程和知识管理——声明性编程会议(2019年宣言)中。施普林格LNCS 12057,柏林,海德堡,286–307。https://doi.org/10.1007/978-3-030-46714-2_18谷歌学者谷歌学者数字图书馆数字图书馆
  14. S.Antoy和A.Jost。2016.一款新的Curry功能逻辑编译器:Sprite。第26届基于逻辑的程序合成与转换国际研讨会(LOPSTR 2016)会议记录。施普林格LNCS 10184,柏林,海德堡,97–113。https://doi.org/10.1007/978-3-319-63139-4_6谷歌学者谷歌学者
  15. F.Baader和T.Nipkow。1998.术语改写和所有这些。剑桥大学出版社,英国剑桥。https://doi.org/10.1017/CBO9781139172752谷歌学者谷歌学者
  16. J.Böhm、M.Hanus和F.Teegen。2021.从不确定性到Goroutines:围棋中咖喱的公平实施。过程中。第23届声明性编程原则与实践国际研讨会(PPDP 2021)。美国纽约州纽约市ACM出版社,16:1–16:15。https://doi.org/10.1145/347939411谷歌学者谷歌学者数字图书馆数字图书馆
  17. B.Braßel、M.Hanus、B.Peemöller和F.Reck。2011年,KiCS2:从Curry到Haskell的新编译器。程序中。第20届功能和(约束)逻辑编程国际研讨会(WFLP 2011)。斯普林格LNCS 6816,柏林,海德堡,1-18。https://doi.org/10.1007/978-3-642-22531-4_1谷歌学者谷歌学者交叉引用交叉引用
  18. B.Braßel和F.Huch。2007年,关于函数和逻辑编程的更紧密集成。程序中。2007年APLAS。施普林格LNCS 4807,柏林,海德堡,122-138。https://doi.org/10.1007/978-3-540-76637-7_9谷歌学者谷歌学者数字图书馆数字图书馆
  19. J.Christiansen、M.Hanus、F.Reck和D.Seidel。2013.函数逻辑程序中弱封装搜索的语义。程序中。第15届声明式编程原理与实践国际研讨会(PPDP'13)。美国纽约州纽约市ACM出版社,49-60。https://doi.org/10.1145/2505879.2505896谷歌学者谷歌学者数字图书馆数字图书馆
  20. S.Fischer、O.Kiselyov和C.Shan。2011.纯功能惰性非确定性编程。《函数编程杂志》21,4&5(2011),413-465。https://doi.org/10.1017/S0956796811000189谷歌学者谷歌学者数字图书馆数字图书馆
  21. J.C.González-Moreno、M.T.Hortalá-Gonzáles、F.J.López-Fraguas和M.Rodríguez-Artalejo。1999.基于重写逻辑的声明性编程方法。《逻辑编程杂志》40(1999),47–87。https://doi.org/10.1016/s0743-1066(98)10029-8谷歌学者谷歌学者交叉引用交叉引用
  22. M.哈纳斯。2012.通过需求分析改进惰性非确定性计算。第28届逻辑程序设计国际会议技术通讯,第17卷。莱布尼茨国际信息学论文集(LIPIcs),德国达格斯图尔,130-143。https://doi.org/10.4230/LIPIcs.ICLP.2012.130谷歌学者谷歌学者
  23. M.哈纳斯。2013.函数逻辑编程:从理论到Curry。在编程逻辑中——纪念哈拉尔德·甘辛格的随笔。斯普林格LNCS 7797,柏林,海德堡,123-168。https://doi.org/10.1007/978-3642-37651-1_6谷歌学者谷歌学者
  24. M.Hanus、S.Antoy、B.Braßel、M.Engelke、K.Höppner、J.Koj、P.Niederau、R.Sadre、F.Steiner和F.Teegen。2021.PAKCS:波特兰亚琛基尔咖喱体系。可在http://www.informatik.uni-kiel.de/~pakcs/。谷歌学者谷歌学者
  25. M.Hanus、B.Peemöller和F.Reck。2012.函数逻辑编程搜索策略。程序中。第五届程序设计语言工作会议(ATPS’12)。斯普林格LNI 199,波恩,61-74。https://doi.org/20.50012116/18376谷歌学者谷歌学者
  26. M.Hanus和F.Teegen。2021.函数逻辑编程的记忆拉码。程序中。第28届功能和(约束)逻辑编程国际研讨会(WFLP 2020)。施普林格LNCS 12560,柏林,海德堡,57-73。https://doi.org/10.1007/978-3-030-75333-7_4谷歌学者谷歌学者
  27. M.Hanus(编辑)。2016年,《Curry:集成函数逻辑语言》(0.9.0版)。可在http://www.curry-lang.org。谷歌学者谷歌学者
  28. G.Huet和J.-J.Lévy。1991年。正交重写系统中的计算。《计算逻辑:纪念艾伦·罗宾逊、J.-L.拉塞兹和G.普罗特金的论文》(编辑)。麻省理工学院出版社,马萨诸塞州剑桥,395-443。谷歌学者谷歌学者
  29. H.Hussmann。1992年。非确定性代数规范和非连续项重写。《逻辑编程杂志》12(1992),237–255。https://doi.org/10.1016/0743-1066(92)90026年谷歌学者谷歌学者数字图书馆数字图书馆
  30. T.约翰逊。1985.Lambda提升:将程序转换为递归函数。函数编程语言和计算机体系结构。斯普林格LNCS 201,柏林,海德堡,190-203。https://doi.org/10.1007/3-540-15975-4_37谷歌学者谷歌学者
  31. 乔治奥斯·卡拉查利亚斯(Georgios Karachalias)、菲利普·科普里维奇(Filip Koprivec)、马蒂亚·普雷特纳(Matija Pretnar)和汤姆·施里杰弗斯(Tom Schrijvers)。2021.代数效果处理程序的高效编译。程序。ACM计划。语言5,OOPSLA(2021年10月),28页。https://doi.org/10.1145/3485479谷歌学者谷歌学者数字图书馆数字图书馆
  32. J.W.劳埃德。1987.逻辑编程基础。施普林格,第二版,扩展版,柏林,海德堡。https://doi.org/10.1007/978-3-642-96826-6谷歌学者谷歌学者
  33. F.López-Fraguas和J.Sánchez-Hernández。1999年。TOY:一个多基数声明系统。程序中。RTA'99年。斯普林格LNCS 1631,柏林,海德堡,244–247。https://doi.org/10.1007/3-540-48685-2_19谷歌学者谷歌学者
  34. 奈杰尔·佩里。实用函数编程语言的实现。博士论文。伦敦大学。谷歌学者谷歌学者
  35. 托马斯·彼得里切克。2012年,一元计算评估策略。《理论计算机科学电子论文集》76(2012),68-89。https://doi.org/10.4204/EPTCS.76.7谷歌学者谷歌学者交叉引用交叉引用
  36. S.Peyton Jones(编辑)。2003年,Haskell 98语言和图书馆——修订报告。剑桥大学出版社,英国剑桥。谷歌学者谷歌学者
  37. 西蒙·佩顿·琼斯(Simon Peyton Jones)、马克·希尔兹(Mark Shields)、约翰·朗奇伯里(John Launchbury)和安德鲁·托尔马赫(Andrew Tolmach)。1998年,桥接海湾:ML和Haskell的通用中间语言。第25届ACM SIGPLAN-SIGACT编程语言原理研讨会会议记录(POPL'98)。美国纽约州纽约市计算机协会,49-61。https://doi.org/10.1145/268946.268951谷歌学者谷歌学者数字图书馆数字图书馆
  38. 美国雷迪。1985.缩小为功能语言的操作语义。程序中。IEEE逻辑编程国际研讨会。IEEE计算机学会,波士顿,138-151。谷歌学者谷歌学者
  39. J.A.罗宾逊。1965.基于解析原理的面向机器的逻辑。J.ACM 12,1(1965),23–41。https://doi.org/10.1145/321250.321253谷歌学者谷歌学者数字图书馆数字图书馆
  40. J.R.斯拉格。1974年。具有简化器、交换性和关联性的理论的自动定理证明。J.ACM 21,4(1974),622–642。https://doi.org/10.1145/321850.321859谷歌学者谷歌学者数字图书馆数字图书馆
  41. Finn Teegen、Kai-Oliver Prott和Niels Bunkenburg.2021。Haskell-1:Haskell中的自动函数反转。第14届ACM SIGPLAN Haskell国际研讨会会议记录(Haskell2021)。美国纽约州纽约市计算机协会,41-55。https://doi.org/10.1145/3471874.3472982谷歌学者谷歌学者数字图书馆数字图书馆
  42. P.瓦德勒。1985.如何用成功列表替换失败:在惰性函数语言中用于异常处理、回溯和模式匹配的方法。在函数编程和计算机体系结构会议(FPCA’85)上。斯普林格LNCS 201,柏林,海德堡,113-128。https://doi.org/10.1007/3-540-15975-4_33谷歌学者谷歌学者交叉引用交叉引用
  43. P.Wadler。1990.理解单子。程序中。1990年ACM LISP和函数编程会议。ACM,美国纽约州纽约市,61-78。https://doi.org/10.1145/91556.91592谷歌学者谷歌学者数字图书馆数字图书馆
  44. P.Wadler。1997.如何宣布紧急事件。计算。调查29,3(1997),240–263。https://doi.org/10.1145/262009.262011谷歌学者谷歌学者数字图书馆数字图书馆

索引术语

  1. 函数逻辑程序的一元实现

          建议

          评论

          登录选项

          检查您是否可以通过登录凭据或您的机构访问本文。

          登录

          完全访问权限

          • 发布于

            封面图片ACM其他会议
            PPDP’22:第24届声明性编程原则与实践国际研讨会会议记录
            2022年9月
            187页
            国际标准图书编号:9781450397032
            内政部:10.1145/3551357

            版权所有©2022 ACM

            如果复制品不是为了盈利或商业利益而制作或分发的,并且复制品的第一页载有本通知和完整引文,则允许免费制作本作品的全部或部分数字或硬拷贝以供个人或课堂使用。必须尊重ACM以外的其他人对本作品组成部分的版权。允许用信用证进行摘要。要以其他方式复制或重新发布,在服务器上发布或重新发布到列表,需要事先获得特定许可和/或付费。从请求权限[电子邮件保护]

            出版商

            计算机协会

            美国纽约州纽约市

            出版历史

            • 出版:2022年9月20日

            权限

            请求有关此文章的权限。

            请求权限

            检查更新

            限定符

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

            接受率

            总体验收率230属于486提交文件,47%

          PDF格式

          以PDF文件查看或下载。

          PDF格式

          电子阅读器

          使用eReader联机查看。

          电子阅读器

          HTML格式

          以HTML格式查看本文。

          查看HTML格式