跳到主要内容
10.1145/2426890.2426910acm会议文章/章节视图摘要出版物页面百事可乐会议记录会议集合
研究文章

固定习惯用法:适用DSL的递归原语

出版:2013年1月21日 出版历史
  • 获取引文提醒
  • 摘要

    在惰性函数语言中,DSL中递归的标准编码使用宿主语言的递归,因此DSL算法自动使用宿主语言中的最小不动点,即使许多域需要算法来生成不同的不动点。特别是,实现为应用函子的DSL(具有纯计算和函数应用概念的结构)就是这种情况。我们提出了一个递归原语afix,它在最终无标记HOAS编码中为递归绑定器建模,但使用了一种新的秩2类型,允许我们指定和利用表征Applicative DSL的效应值分离。与Monad和Arrows的相关方法不同,我们建模的是有效的递归,而不是值递归。
    使用泛型编程技术,我们定义了运算符的算术泛型版本,以对相互递归定义建模。我们用一种浅层语法糖来恢复直观的用户语法:一种在语法上类似于let构造的alet构造,我们在GHC Haskell编译器中实现了let构造。我们描述了afix算子的一个公理。我们用来自Applicative解析器组合子和函数式反应式编程的示例来证明其有用性。与以前的方法不同,我们展示了如何在没有特殊库支持的情况下对像许多这样的高阶递归操作符进行编码,并且我们演示了左递归移除转换的实现。

    工具书类

    [1]
    A.I.Baars、A.Löh和S.D.Swierstra。分析排列短语。J.功能。程序。,14(6):635--646, 2004.
    [2]
    A.I.Baars和S.D.Swierstra。类型安全,自检代码。Haskell,第69-79页,2004年。
    [3]
    A.I.Baars、S.D.Swierstra和M.Viera。类型化抽象语法的类型化转换:左角转换。LDTA,第18-33页,2009年。
    [4]
    K.Brink、S.Holdermans和A.Löh。依赖类型的语法。2010年,MPC。
    [5]
    J.Carette、O.Kiselyov和C.-C.Shan。最后,无标记,部分评估:用于简单类型语言的无标记分段解释器。J.功能。程序。,19(05):509--543, 2009.
    [6]
    A.Chlipala。机械化语义的参数化高阶抽象语法。在ICFP中,第143-1562008页。
    [7]
    N.A.丹尼尔森。解析器组合器总数。在ICFP中,第285-296页,2010年。
    [8]
    N.A.Danielsson、J.Hughes、P.Jansson和J.Gibbons。快速而松散的推理在道德上是正确的。在POPL中,第206-217页,2006年。
    [9]
    N.A.Danielsson和U.Norell。结构递归下降解析。草案,2008年。
    [10]
    D.Devriese和F.Piessens。显式递归语法组合子-一些语法算法的实现。技术报告CW594,KULeuven CS,2010年。
    [11]
    D.Devriese和F.Piessens。显式递归语法组合子。在PADL中,第84-98页。施普林格,2011年。
    [12]
    D.Devriese和F.Piessens。最后,抽象语法模型的无标记可观察递归。函数编程杂志,22(06):757-7962012。
    [13]
    C.Elliott和P.Hudak。功能反应动画。在ICFP中,第263-273页,1997年。
    [14]
    L.Erkök和J.Launchbury。递归单数绑定。在ICFP中,第174-1852000页。
    [15]
    L.Erkök和J.Launchbury。Haskell的递归do。Haskell,第29-37页,2002年。
    [16]
    R.弗罗斯特、R.哈菲兹和P.卡拉汉。歧义左递归文法的分析器组合子。PADL,2008年。
    [17]
    J.E.Hopcroft、R.Motwani和J.D.Ullman。介绍自动机理论、语言和计算。Addison-Wesley,2003年。
    [18]
    J.休斯。将单子概括为箭头。科学。计算。程序。,37(1--3):67--111, 2000.
    [19]
    N.R.Krishnaswami和N.Benton。图形用户界面的语义模型。2011年,ICFP第45-57页。
    [20]
    S.Lindley、P.Wadler和J.Yallop。成语是不经意的,箭头是一丝不苟的,单子是乱七八糟的。在MSFP中,第97-117页,2008年。
    [21]
    P.Ljunglöf。纯函数解析-高级教程。硕士论文,Chalmers,2002年。
    [22]
    C.麦克布莱德。伪装:在Haskell中模拟依赖类型。J.功能。程序。,12(4--5):375--392, 2002.
    [23]
    C.McBride和R.Paterson。具有效果的应用程序。J.功能。程序。,2008年1月13日18:1。
    [24]
    M.Might、D.Darais和D.Spiewak。用衍生物分析:一种功能性珍珠。ICFP,第189-195页,2011年。
    [25]
    B.C.Oliveira和W.R.Cook。用结构化图进行函数编程。在ICFP中,第77-88页,2012年。
    [26]
    B.C.Oliveira和A.Löh。领域特定语言的抽象语法图。2013年《政治公众人物》。
    [27]
    R.帕特森。箭头的新符号。在ICFP中,第229--240页,2001年。
    [28]
    J.Peterson、P.Hudak和C.Elliott。运动中的兰姆达:用哈斯克尔控制机器人。在PADL中,第91-1051999页。
    [29]
    S.Peyton Jones、D.Vytiniotis、S.Weirich和G.Washburn。GADT的基于简单统一的类型推断。在ICFP中,第50-612006页。
    [30]
    M.Sulzmann、M.M.T.Chakravarty、S.P.Jones和K.Donnelly。具有类型相等强制的系统F。在TLDI中,第53-66页,2007年。
    [31]
    S.D.Swierstra和L.Duponcheel。确定性、纠错组合分析。AFP,第184-207页,1996年。
    [32]
    J.Voigtl“ander。涉及类型构造函数类的自由定理:函数珍珠。ICFP,第173-1842009页。
    [33]
    D.Vytiniotis、S.Peyton Jones、T.Schrijvers和M.Sulzmann。OutsideIn(X)具有局部假设的模块化类型推断。J.功能。程序。,1(1):1--80, 2011.
    [34]
    P.Wadler。免费的定理!在FPLCA中,第347-359页,1989年。
    [35]
    G.Washburn和S.Weirich。盒子疯了:用参数多态性编码高阶抽象语法。在ICFP中,第249--262页,2003年。
    [36]
    G.Winskel。编程语言的形式语义:简介。麻省理工学院出版社,1993年。

    引用人

    查看全部

    索引术语

    1. 修复习惯用法:应用DSL的递归原语

      建议

      评论

      信息和贡献者

      问询处

      发布于

      封面图片ACM会议
      PEPM’13:ACM SIGPLAN 2013部分评估和程序操作研讨会会议记录
      2013年1月
      162页
      国际标准图书编号:9781450318426
      内政部:10.1145/2426890
      如果复制品不是为了盈利或商业利益而制作或分发的,并且复制品的第一页载有本通知和完整引文,则允许免费制作本作品的全部或部分数字或硬拷贝以供个人或课堂使用。必须尊重ACM以外的其他人对本作品组成部分的版权。允许用信用证进行摘要。要以其他方式复制或重新发布、在服务器上发布或重新分发到列表,需要事先获得特定许可和/或收取费用。从请求权限[电子邮件保护]

      赞助商

      合作中

      出版商

      计算机协会

      美国纽约州纽约市

      出版历史

      出版:2013年1月21日

      权限

      请求对此文章的权限。

      检查更新

      作者标记

      1. 应用函子
      2. 恶作剧
      3. 可观察递归

      限定符

      • 研究文章

      会议

      流行'13
      主办单位:

      接受率

      政治公众人物协会(PEPM)的13份文件接受率(29份提交文件中的13份,45%);
      总体接受率120份提交中的66份,55%

      贡献者

      其他指标

      文献计量学和引文

      文献计量学

      文章指标

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

      其他指标

      引文

      引用人

      查看全部
      • (2019)选择性应用函子美国计算机学会程序设计语言会议录10.1145/3341694:ICFP(1-29)在线发布日期:2019年7月26日
      • (2017)Packrats解析成包ACM SIGPLAN通知10.1145/3156695.312295852:10(14-25)在线发布日期:2017年9月7日
      • (2017)Packrats解析成包第十届ACM SIGPLAN Haskell国际研讨会会议记录10.1145/3122955.3122958(14-25)在线发布日期:2017年9月7日
      • (2017)经验报告第一届程序设计艺术、科学和工程国际会议同期会议记录10.1145/3079368.3079405(1-6)在线发布日期:2017年4月3日
      • (2015)函数式编程的重要性国家科学评论10.1093/nsr/nwv0422:3(349-370)在线发布日期:2015年7月13日
      • (2013)领域特定语言的抽象语法图ACM SIGPLAN 2013部分评估和程序操作研讨会会议记录10.1145/2426890.2426909(87-96)在线发布日期:2013年1月21日

      视图选项

      获取访问权限

      登录选项

      完全访问权限

      查看选项

      PDF格式

      以PDF文件查看或下载。

      PDF格式

      电子阅读器

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

      电子阅读器

      媒体

      数字

      其他

      桌子

      分享

      分享

      共享此出版物链接

      在社交媒体上分享