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

从不确定性到Goroutines:围棋Curry的公平实现

出版:2021年10月7日出版历史记录

摘要

声明性编程语言Curry将函数编程的需求驱动评估与逻辑编程的非确定性相结合。与Prolog不同,非确定性计算的搜索策略是不固定的,因此完整或并行策略对于Curry来说是合理的。特别是,理想的选择是一种公平的策略,它使程序员不必考虑搜索策略对计算成功的影响。在本文中,我们描述了一个具有此属性的实现。基于函数逻辑编程操作模型的最新发展,我们提出了一种新的实现方法,它将Curry程序在几个转换步骤中转换为Go程序。通过使用goroutine形式的轻量级线程,我们获得了一个完整而公平的实现,它自动使用多处理来加速非确定性计算。在某些情况下,非确定性算法的评估效率高于确定性算法。

工具书类

  1. H.艾特·卡奇。1991年,沃伦的抽象机器。麻省理工学院出版社。谷歌学者谷歌学者
  2. E.Albert、M.Hanus、F.Huch、J.Oliver和G.Vidal。2005.声明性多范式语言的操作语义。符号计算杂志40,1(2005),795–829。谷歌学者谷歌学者数字图书馆数字图书馆
  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。谷歌学者谷歌学者交叉引用交叉引用
  5. S.Antoy。2011年,《论拉削的正确性》,《逻辑程序设计的理论与实践》11,4-5(2011),713–730。https://doi.org/10.1017/S1471068411000263谷歌学者谷歌学者交叉引用交叉引用
  6. S.Antoy、R.Echahed和M.Hanus。2000.一项必要的缩小战略。《美国临床医学杂志》47,4(2000),776–822。https://doi.org/10.1145/347476.347484谷歌学者谷歌学者数字图书馆数字图书馆
  7. S.Antoy和M.Hanus。2000.将多Paradigm声明性程序编译为Prolog。程序中。联合系统前沿国际研讨会(FroCoS’2000)。施普林格LNCS 1794、171–185。谷歌学者谷歌学者
  8. S.Antoy和M.Hanus。2005.函数模式的声明性编程。《基于逻辑的程序合成与转换国际研讨会论文集》(LOPSTR'05)。施普林格LNCS 3901,6–22。https://doi.org/10.1007/111680093_2谷歌学者谷歌学者数字图书馆数字图书馆
  9. S.Antoy和M.Hanus。2006.函数逻辑程序中的重叠规则和逻辑变量。《第22届逻辑程序设计国际会议论文集》(ICLP 2006)。施普林格LNCS 4079,87–101。谷歌学者谷歌学者数字图书馆数字图书馆
  10. S.Antoy和M.Hanus。2009.设置功能逻辑编程的功能。在第11届ACM SIGPLAN国际声明性编程原则和实践会议(PPDP'09)的会议记录中。ACM出版社,73–82。https://doi.org/10.1145/1599410.1599420谷歌学者谷歌学者数字图书馆数字图书馆
  11. S.Antoy和M.Hanus。2010.功能逻辑编程。Commun公司。ACM 53,4(2010),74-85。https://doi.org/10.1145/1721654.1721675谷歌学者谷歌学者数字图书馆数字图书馆
  12. S.Antoy和M.Hanus。2012.功能逻辑编程合同和规范。程序中。第十四届国际声明性语言实践方面研讨会(PADL 2012)。施普林格LNCS 7149,33–47。https://doi.org/10.1007/978-3-642-27694-1_4谷歌学者谷歌学者数字图书馆数字图书馆
  13. S.Antoy和M.Hanus。2017.货币默认规则。逻辑程序设计理论与实践17,2(2017),121-147。https://doi.org/10.1017/S1471068416000168谷歌学者谷歌学者交叉引用交叉引用
  14. S.Antoy和M.Hanus。2017.将布尔等式转换为约束。《计算的形式方面》29,3(2017),475–494。https://doi.org/10.1007/s00165-016-0399-6谷歌学者谷歌学者数字图书馆数字图书馆
  15. S.Antoy、M.Hanus、A.Jost和S.Libby。2020年,国际货币基金组织。在声明式编程和知识管理-声明式编程会议(DECLARE 2019)。施普林格LNCS 12057、286–307。https://doi.org/10.1007/978-3-030-46714-2_18谷歌学者谷歌学者数字图书馆数字图书馆
  16. S.Antoy、M.Hanus、J.Liu和A.Tolmach。2005.用于功能逻辑计算的虚拟机。程序中。第16届函数式语言的实现和应用国际研讨会(IFL 2004)。施普林格LNCS 3474,108–125。谷歌学者谷歌学者
  17. S.Antoy和A.Jost。2013.编译函数逻辑语言:公平方案。第23届基于逻辑的程序综合与转换国际研讨会论文集(LOPSTR,2013)。施普林格LNCS 8901202-219。https://doi.org/10.1007/978-3-319-14125-1_12谷歌学者谷歌学者
  18. 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谷歌学者谷歌学者
  19. 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谷歌学者谷歌学者交叉引用交叉引用
  20. B.Braßel和F.Huch。2007年,关于函数和逻辑编程的更紧密集成。程序中。2007年APLAS。施普林格LNCS 4807、122–138。谷歌学者谷歌学者
  21. J.Chassin de Kergommeaux和P.Codognet。1994.并行逻辑编程系统。ACM Computing Serveys第26、3期(1994年),295–336页。https://doi.org/10.1145/185403.185453谷歌学者谷歌学者数字图书馆数字图书馆
  22. R.Echahed和J.-C.Janodet。1997。关于基于构造函数的图形重写系统。研究报告IMAG 985-I.IMAG-LSR,CNRS,格勒诺布尔。谷歌学者谷歌学者
  23. J.C.González-Moreno、M.T.Hortalá-Gonzáles、F.J.López-Fraguas和M.Rodríguez-Artalejo。1999.一种基于重写逻辑的声明性编程方法。《逻辑编程杂志》40(1999),47–87。谷歌学者谷歌学者交叉引用交叉引用
  24. M.哈纳斯。1990年,编写平等的逻辑程序。程序中。第二届国际编程语言实现与逻辑编程研讨会的主席。斯普林格LNCS 456387–401。谷歌学者谷歌学者
  25. M.哈纳斯。2012.通过需求分析改进惰性非确定性计算。第28届逻辑程序设计国际会议技术通讯,第17卷。莱布尼茨国际信息学学报(LIPIcs),130-143。https://doi.org/10.4230/LIPIcs.ICLP.2012.130谷歌学者谷歌学者
  26. M.哈纳斯。2013.函数逻辑编程:从理论到Curry。在编程逻辑中——纪念哈拉尔德·甘辛格的随笔。施普林格LNCS 7797、123–168。https://doi.org/10.1007/978-3642-37651-1_6谷歌学者谷歌学者
  27. M.哈纳斯。2017.CurryCheck:检查Curry程序的属性。第26届基于逻辑的程序合成与转换国际研讨会(LOPSTR 2016)会议记录。施普林格LNCS 10184、222–239。https://doi.org/10.1007/978-3-319-63139-4_13谷歌学者谷歌学者交叉引用交叉引用
  28. M.哈纳斯。2020年,结合静态和动态合同检查货币。《基础信息》173,4(2020),285–314。https://doi.org/10.3233/FI-2020-1925谷歌学者谷歌学者交叉引用交叉引用
  29. M.Hanus、S.Antoy、B.Braßel、M.Engelke、K.Höppner、J.Koj、P.Niederau、R.Sadre、F.Steiner和F.Teegen。2020年,PAKCS:波特兰亚琛基尔咖喱体系。可在http://www.informatik.uni-kiel.de/~pakcs/。谷歌学者谷歌学者
  30. M.Hanus和R.Sadre。1999.Curry抽象机及其Java并发实现。《函数和逻辑程序设计杂志》1999,6(1999)。谷歌学者谷歌学者
  31. M.Hanus和F.Teegen。2021.函数逻辑编程的记忆拉码。程序中。第28届功能和(约束)逻辑编程国际研讨会(WFLP 2020)。施普林格LNCS 12560,57–73。https://doi.org/10.1007/978-3-030-75333-7_4谷歌学者谷歌学者
  32. M.Hanus(编辑)。2016年,Curry:一种集成函数逻辑语言(版本0.9.0)。可在http://www.curry-lang.org。谷歌学者谷歌学者
  33. S.Haridi和P.Brand。1988年,安道尔Prolog:Prolog语言与承诺选择语言的融合。程序中。第五代计算机系统国际会议。745–754.谷歌学者谷歌学者
  34. M.V.Hermenegildo和F.Rossi。逻辑程序中的严格和非严格独立并行:正确性、效率和编译时条件。《逻辑编程杂志》22,1(1995),1-45。谷歌学者谷歌学者交叉引用交叉引用
  35. C.A.R.霍尔。1978.通信顺序过程。Commun公司。ACM 21,8(1978),666–677。https://doi.org/10.1145/359576.359585谷歌学者谷歌学者数字图书馆数字图书馆
  36. G.Huet和J.-J.莱维。1991年。正交重写系统中的计算。《计算逻辑:纪念艾伦·罗宾逊、J.-L.拉塞兹和G.普罗特金的论文》(编辑)。麻省理工学院出版社,395-443。谷歌学者谷歌学者
  37. H.Hussmann。1992年。非确定性代数规范和非连续项重写。《逻辑编程杂志》12(1992),237–255。https://doi.org/10.1016/0743-1066(92)90026-Y谷歌学者谷歌学者数字图书馆数字图书馆
  38. T.约翰逊。1985.Lambda提升:将程序转换为递归函数。函数编程语言和计算机体系结构。施普林格LNCS 201、190–203。谷歌学者谷歌学者
  39. J.朗奇伯里。1993。懒惰评估的自然语义。程序中。第20届美国计算机学会程序设计语言原理研讨会(POPL'93)。ACM出版社,144-154。谷歌学者谷歌学者数字图书馆数字图书馆
  40. F.López-Fraguas和J.Sánchez-Hernández。1999年,TOY:一个多参数声明系统。程序中。RTA'99年。施普林格LNCS 1631、244–247。谷歌学者谷歌学者
  41. 西勒克斯。1999.实现对懒惰函数逻辑语言的封装搜索。程序中。第四届富士函数与逻辑编程国际研讨会(FLOPS’99)。施普林格LNCS 1722100-113。谷歌学者谷歌学者数字图书馆数字图书馆
  42. W.帕坦。1993年,Haskell项目的nofib基准套件。1992年格拉斯哥函数编程研讨会论文集。斯普林格,195-202。谷歌学者谷歌学者交叉引用交叉引用
  43. S.L.佩顿·琼斯。1992.在库存硬件上实现惰性函数语言:无脊椎无标签G机。函数编程杂志2,2(1992),127-202。谷歌学者谷歌学者交叉引用交叉引用
  44. S.Peyton Jones(编辑)。2003年,Haskell 98语言和图书馆——修订报告。剑桥大学出版社。谷歌学者谷歌学者
  45. D.丰满。1999.术语图改写。在《图形语法和图形变换计算手册》第2卷:应用程序、语言和工具中,H.Ehrig、G.Engels、H.-J.Kreowski和G.Rozenberg(编辑)。世界科学,3-61。谷歌学者谷歌学者
  46. 美国雷迪。1985.缩小为功能语言的操作语义。程序中。IEEE国际。逻辑程序设计研讨会。波士顿,138-151。谷歌学者谷歌学者
  47. J.C.雷诺兹。1972年。高级编程语言的定义解释器。ACM年会会议记录。ACM出版社,717–740。谷歌学者谷歌学者数字图书馆数字图书馆
  48. P.Wadler。1985.如何用成功列表取代失败。函数编程与计算机体系结构。施普林格LNCS 201、113–128。谷歌学者谷歌学者
  49. P.Wadler。1997.如何宣布紧急事件。计算。调查29,3(1997),240–263。谷歌学者谷歌学者数字图书馆数字图书馆
  50. D.H.D.沃伦。1982.Prolog的高级扩展:是否需要?。机器智能10。441–454.谷歌学者谷歌学者
  51. D.H.D.沃伦。1987.Prolog并行执行的SRI模型:抽象设计和实现问题。程序中。1987年国际。逻辑程序设计研讨会。第92页至第102页。谷歌学者谷歌学者
  52. M.A.Wittorf,2018年。Curry程序到命令程序的通用翻译(德语)。硕士论文。基尔大学。谷歌学者谷歌学者

索引术语

  1. 从不确定性到Goroutines:围棋Curry的公平实现
            索引项已通过自动分类分配给内容。

            建议

            评论

            登录选项

            请检查您是否可以通过登录凭据或您的机构访问此文章以获得完全访问权限。

            登录

            完全访问权限

            • 发布于

              封面图片ACM其他会议
              PPDP’21:第23届声明性编程原则与实践国际研讨会论文集
              2021年9月
              277页
              国际标准图书编号:9781450386890
              内政部:10.1145/3479394

              版权所有©2021 ACM

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

              出版商

              计算机协会

              美国纽约州纽约市

              出版历史记录

              • 出版:2021年10月7日

              权限

              请求有关此文章的权限。

              请求权限

              检查更新

              限定符

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

              验收费率

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

            PDF格式

            以PDF文件查看或下载。

            PDF格式

            电子阅读器

            使用eReader联机查看。

            电子阅读器

            HTML格式

            以HTML格式查看本文。

            查看HTML格式