×

所有模式FRP:Haskell中没有空间泄漏的函数式反应式编程。 (英语) Zbl 07697866号

概要:功能性反应式编程(FRP)为以声明方式实现反应式系统提供了一个高级接口。然而,必须小心控制这个高级接口,以确保程序实际上可以在实践中执行。具体来说,必须确保FRP程序是因果的,并且可以在不引入空间泄漏的情况下实施。近年来,模态类型被证明是确保这些操作特性的有效工具。在本文中,我们提出了一种模态FRP语言(mathsf{Rattus}),它扩展并简化了以前的模态FRP计算,同时仍然保持了生产率、因果关系和空间泄漏的操作保证。简化类型系统使\(\mathsf{Rattus}\)成为一种实用的编程语言,可以与现有的函数式编程语言集成。为了演示这一点,我们在Haskell中实现了一个浅嵌入的\(\mathsf{Rattus}\),它允许程序员用熟悉的Haskel语法编写\(\mathsf{Rattus}\)代码,并将其与常规Haskel代码无缝集成。因此,(mathsf{Rattus})结合了Yampa等FRP库所享有的优势,即访问丰富的图书馆生态系统(例如,用于图形编程),以及定制型系统所提供的强大操作保障。为了确定语言的生产力、因果关系和记忆属性,我们使用Coq证明助手中完全机械化的逻辑关系论证来证明类型的正确性。

MSC公司:

68甲18 函数编程和lambda演算
PDF格式BibTeX公司 XML格式引用
全文: 内政部

参考文献:

[1] Abramsky,S.、Honda,K.和Mccusker,G.(1998)《通用参考的完全抽象游戏语义》。第十三届IEEE计算机科学逻辑研讨会论文集(分类号98CB36226)。美国印第安纳波利斯:IEEE计算机协会,第334-344页。
[2] Appel,A.W.&Mcallester,D.(2001)基本校对代码的递归类型索引模型。ACM事务处理。程序。语言系统23(5),657-683,00283。
[3] Bahr,P.,Grathwohl,H.B.&Mögelberg,R.E.(2017)时钟在滴答作响:不再拖延!在2017年6月20日至23日于冰岛雷克雅未克举行的2017年LICS第32届ACM/IEEE计算机科学逻辑年会上。美国哥伦比亚特区华盛顿:IEEE计算机协会,第1-12页·Zbl 1452.03031号
[4] Bahr,P.,Graulund,C.U.&Mögelberg,R.E.(2019)Simply RaTT:一种适用于无空间泄漏的反应式编程的fitch-style模态演算。程序。ACM计划。语言3(ICFP),1-27。
[5] Bahr,P.,Graulund,C.U.&Mögelberg,R.E.(2021)钻石不是永远的:具有保护递归的反应式编程的活力。在POPL 2021中,将出现。
[6] Barber,A.(1996)对偶直觉线性逻辑。技术报告。英国爱丁堡爱丁堡大学。
[7] Berry,G.&Cosserat,L.(1985)酯类同步编程语言及其数学语义。在并行研讨会上。德国海德堡柏林:施普林格-柏林-海德堡,第389-448页·Zbl 0599.68023号
[8] Birkedal,L.、Clouston,R.、Mannaa,B.、Mögelberg,R.E.、Pitts,A.M.和Spitters,B.(2018)模态依赖型理论和依赖右伴随词。arXiv:1804.05236[cs]。00000arXiv:1804.05236·Zbl 1479.03011号
[9] Birkedal,L.,Mögelberg,R.E.,Schwinghammer,J.&Stövring,K.(2011)合成保护域理论的第一步:树拓扑中的阶跃诱导。在LICS的会议记录中。美国哥伦比亚特区华盛顿:IEEE计算机协会,第55-64页·Zbl 1269.03035号
[10] Borghuis,V.A.J.(1994)《接受模态逻辑:关于类型Lambda微积分中模态的解释》。博士论文。埃因霍温理工大学,00034·Zbl 0811.03010号
[11] Caspi,P.,Pilaud,D.,Halbwachs,N.&Plaice,J.A.(1987)Lustre:实时编程的声明性语言。第14届ACM SIGACT-SIGPLAN编程语言原理研讨会论文集。美国纽约州纽约市:ACM,第178-188页。
[12] Cave,A.、Ferreira,F.、Panangaden,P.和Pientka,B.(2014)公平反应式编程。在第41届ACM SIGPLAN-SIGCT编程语言原理研讨会论文集上。美国加利福尼亚州圣地亚哥:ACM,第361-372页·Zbl 1284.68127号
[13] Chaudhury,V.和Krishnaswami,N.(2020年)用辅音和功能恢复纯度。在ICFP 2020中,将出现。
[14] Clouston,R.(2018)《Fitch-style model lambda calculi》。软件科学和计算结构基础。查姆:斯普林格。施普林格国际出版公司,第258-275页·Zbl 1504.03014号
[15] Elliott,C.和Hudak,P.(1997)功能反应动画。第二届ACM SIGPLAN函数编程国际会议论文集。美国纽约州纽约市:ACM,第263-273页·Zbl 1369.68094号
[16] Fitch,F.B.(1952)《符号逻辑导论》。美国纽约州纽约市:罗纳德·Zbl 0049.00504号
[17] Guatto,A.(2018)递归的广义形式。第33届ACM/IEEE计算机科学逻辑年会论文集。ACM,第482-491页·Zbl 1497.68093号
[18] Hudak,P.、Courtney,A.、Nilsson,H.和Peterson,J.(2004)《箭头、机器人和功能反应式编程》。在高级函数编程中。施普林格-柏林/海德堡。
[19] Jeffrey,A.(2012)LTL类型FRP:线性时间时序逻辑命题作为类型,证明作为功能反应程序。2012年1月24日,美国宾夕法尼亚州费城,PLPV 2012,第六届编程语言与程序验证研讨会会议记录。美国宾夕法尼亚州费城:ACM,。第49-60页。
[20] Jeffrey,A.(2014)功能反应类型。在第二十届EACSL计算机科学逻辑年会(CSL)联合会议和第二十届ACM/IEEE计算机科学逻辑研讨会(LICS)会议记录中。美国纽约州纽约市:ACM,第54:1-54:9页·Zbl 1394.68065号
[21] Jeltsch,W.(2013)具有“直到”的时态逻辑,具有过程的功能反应式编程,以及具体的过程类别。在第七届编程语言研讨会的会议记录中,遇到了程序验证。美国纽约州纽约市:ACM,第69-78页。
[22] Järvi,J.,Marcus,M.,Parent,S.,Freeman,J.&Smith,J.N.(2008)《属性模型:从偶然算法到可重用组件》。《第七届生成程序设计和组件工程国际会议论文集》,美国纽约州纽约市:ACM,第89-98页。
[23] Kavvos,G.A.(2019)《模式、凝聚力和信息流》。程序。ACM计划。语言3(POPL),20:1-20:29,00000。
[24] Krishnaswami,N.R.(2013)无时空泄漏的高阶函数反应式编程。在第18届ACM SIGPLAN功能编程国际会议论文集。美国马萨诸塞州波士顿:ACM,第221-232页·Zbl 1323.68128号
[25] Krishnaswami,N.R.和Benton,N.(2011)反应式程序的超常语义。2011年IEEE第26届计算机科学逻辑年会。美国哥伦比亚特区华盛顿:IEEE计算机协会,第257-266页。
[26] Krishnaswami,N.R.,Benton,N.&Hoffmann,J.(2012)有界空间中的高阶函数反应规划。2012年1月22日至28日,美国宾夕法尼亚州费城,第39届ACM SIGPLAN-SIGACT编程语言原理研讨会论文集,2012年POPL。美国宾夕法尼亚州费城:ACM,第45-58页·Zbl 1321.68171号
[27] Mannaa,B.&Mögelberg,R.E.(2018)《时钟——它们是附加词:时钟类型理论的指称语义》。在2018年7月9日至12日于英国牛津举行的第三届国际计算和演绎形式结构会议上,美国纽约州纽约市,第23:1-23:17页·Zbl 1462.68023号
[28] Mögelberg,R.E.&Veltri,N.(2019)双向模拟作为保护递归类型的路径类型。程序。ACM计划。语言3(POPL),4:1-4:29。
[29] Nakano,H.(2000)递归的一种形式。第十五届IEEE计算机科学逻辑年会论文集(分类号99CB36332)。美国哥伦比亚特区华盛顿:IEEE计算机协会,第255-266页。
[30] Nilsson,H.、Courtney,A.和Peterson,J.(2002),功能反应式编程,续。2002年ACM SIGPLAN Haskell研讨会论文集。美国纽约州纽约市:ACM,第51-64页。
[31] Parent,S.(2006)软件开发的可能未来。在OOPSLA’06图书馆中心软件设计研讨会上的主题演讲。
[32] Paterson,R.(2001)箭头的新符号。ACM SIGPLAN非.36(10),229-240,00234·Zbl 1323.68147号
[33] Perez,I.、Bärenz,M.和Nilsson,H.(2016)《功能反应式编程,重构》。第九届哈斯克尔国际研讨会论文集。美国纽约州纽约市:计算机协会,第33-44页。
[34] Perez,I.&Nilsson,H.(2020)功能反应系统的运行时验证和确认。J.功能。程序。30
[35] Van Der Ploeg,A.和Claessen,K.(2015)实用原则FRP:忘记过去,改变未来,FRPNow!第20届ACM SIGPLAN函数编程国际会议论文集。加拿大不列颠哥伦比亚省温哥华:计算机协会,第302-314页,00019页·Zbl 1360.68337号
[36] Pnueli,A.(1977)程序的时序逻辑。第18届计算机科学基础年度研讨会论文集。美国哥伦比亚特区华盛顿:IEEE计算机协会,第46-57页。
[37] Pouzet,M.(2006)Lucid同步机,第3版。教程和参考手册。巴黎南大学,LRI.1,25。
[38] Sculthorpe,N.和Nilsson,H.(2009)通过依赖类型进行安全的函数反应式编程。第14届ACM SIGPLAN函数编程国际会议论文集。美国纽约州纽约市:ACM,第23-34页·Zbl 1302.68070号
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。