Relational Reactive Programming: miniKanren for the Web
本文提出关系式响应式编程方法,通过实现响应式 Javascript 版 miniKanren 和集成编程模型,解决前端开发中模型与视图同步演化问题。
2024-08-30 cs.PL
Tackling the Awkward Squad for Reactive Programming: The Actor-Reactor Model
针对响应式编程在真实应用中难以处理长时间计算、副作用及命令式与响应式代码协调的问题,提出 Actor-Reactor 模型,通过严格分离与数据流组合,在 Stella 语言中实现验证。
2023-06-21 cs.PL
Smoothly Navigating between Functional Reactive Programming and Actors
我们正式定义了一个优雅的多范式统一的功能反应式编程,演员系统,面向对象编程。这就实现了一种直观的声明式编程,在保持安全性的同时获得了并发性的强大功能。我们使用对象和引用功能来突出和驯服命令式功能:引用功能跟踪别名和可变性,对象功能跟踪I/O。形式上,我们的类型系统限制了不纯代码的范围、影响和交互。- 作用域:输入为纯的表达式将表现出确定性。- 影响:避免了数据竞争和同步问题。参与者非确定性行为的唯一方法是根据消息传递顺序改变其状态。- 相互作用:信号提供了命令式代码和函数式代码之间的功能边界,防止不纯代码使函数假设无效。
2021-01-08 cs.PL
Juniper: A Functional Reactive Programming Language for the Arduino
本文介绍了Juniper的设计和实现:一种针对Arduino和相关微控制器系统的功能反应式程序设计语言(FRP)。Juniper提供了许多高级功能,包括参数多态函数、匿名函数、自动存储管理和不可变数据结构。还包括一个标准库,提供了许多有用的FRP信号处理功能。Juniper被翻译成标准C++,并使用现有的Arduino开发工具进行编译,使Juniper程序能够适应资源受限的设备,并实现与这些设备的现有C++库的无缝互操作性。
2019-11-29 cs.PL
Simply RaTT: A Fitch-style Modal Calculus for Reactive Programming without Space Leaks
函数式反应式编程(FRP)是一种使用信号和事件进行编程的范例,允许用户在高抽象级别上描述反应式程序。要做到这一点,FRP语言必须确保所有程序都是因果关系的,并且可以在不引入空间泄漏和时间泄漏的情况下实现。为此,某些FRP语言不提供对信号的直接存取,而只是提供对信号函数的存取。最近,模态类型已被建议作为一种替代方法,以确保在同步情况下的FRP语言的因果关系,直接存取的信号和事件的抽象。本文提出了一种新的反应式编程模式演算Simply RaTT。与以前的演算不同,Simply RaTT使用Fitch风格的方法来处理模态类型,这简化了类型系统,使程序更加简洁。呼应Krishnaswami以前的结果为不同的语言,我们设计了一个操作语义,安全地执行简单的RaTT程序没有空间泄漏。我们还确定了其他模态FRP语言中存在的时间泄漏的来源:延迟计算中不动点的展开。Simply RaTT型系统消除了这些时间泄漏。
2019-06-11 cs.PL
Functional Reactive Programming with Effects, A More Permissive Approach
本文提出一种扩展 WORMHOLES 的函数式响应式编程语言,将资源分为输入/输出资源与内部资源,放宽单次使用限制,并证明程序可翻译为等价的无效应 YAMPA 程序。
2025-03-08 cs.PL
Topology-Level Reactivity in Distributed Reactive Programs: Reactive Acquaintance Management using Flocks
响应式编程是一种流行的事件驱动应用程序编程范式,并且经常被提议作为编写分布式应用程序的范式。其中一种类型的应用程序是 *prosumer* 应用程序,它们是分布式应用程序,既产生又消费许多事件。我们分析了使用反应式程序设计语言或框架来实现产消者应用程序时出现的问题。我们发现,开放网络的假设,这意味着各种类型的产消者自发地加入和离开网络,可能会导致大量的代码复杂性或运行时效率低下。这些问题的基础在于熟人管理:在生产者加入和离开网络时发现他们的能力,并在整个反应式程序中正确地保持这种状态。大多数现有的反应式程序设计语言和框架对管理熟人的支持有限,导致代码意外复杂或计算效率低下。在本文中,我们提出了反应式程序的熟人管理。首先,我们设计了一个熟人发现机制来创建一个自动发现网络上的产消者的群体。群的一个重要方面是它们与反应式程序的集成,使得反应式程序可以正确有效地维护其状态。为此,我们设计了一个熟人维护机制:一种新型的函数式反应程序设计语言操作符,我们称之为“部署-*”。“deploy-*”操作符能够对所发现的产消者的随时间变化的集合做出正确和有效的反应。所提出的机制是在一个反应式程序设计语言称为斯特拉,它作为一个语言的车辆来展示我们的方法的想法。我们的熟人管理的结果在计算效率和惯用的反应代码的实现。我们通过基准测试定量评估我们的方法,这些基准测试表明我们的实现是有效的:每当发现一个新的产消…
2022-02-18 cs.PL
Reactive Graphs for Efficient Markov Chain Monte Carlo Inference in Probabilistic Programming Languages
KTH Royal Institute of Technology(瑞典皇家理工学院);Swedish Museum of Natural History(瑞典自然历史博物馆)
提出一种自动将概率程序转换为动态反应图的方法,显式表示数据依赖,使得MCMC提议仅重新计算依赖已重绘随机变量的部分,从而提升推断效率。
2026-06-29 cs.PL
Choreographies for Reactive Programming
模块化编程是软件开发的基石,因为它允许从简单组件的组装中构建复杂的系统,并支持可重用性和替代原则。在分布式环境中,组件组装由通信支持,通信通常需要遵循指定的交互协议。在本文中,我们提出了一种语言的分布式系统的模块化开发,组件的组装是由指定的通信协议的编排支持。我们的语言允许单独的组件行为,给出的反应数据端口,和编排,指定为第一类实体。这允许我们考虑组件和编排的可重用性和替换原则。我们展示了我们的模型如何可以被编译成一个更可操作的角度在一个可证明是正确的方式,我们提出了一个类型的纪律,解决通信安全和系统的进展,其中的替代性的概念自然出现。
2018-01-24 cs.PL
Reactive Programming without Functions
本文提出一种无函数、无提升的纯响应式编程语言,以 reactors 与 deployments 为核心并增量引入状态、动态依赖、递归和词法作用域,从而避免 EDSL 中宿主代码带来的发散与范式失配问题。
2024-03-04 cs.PL
Active Expressions: Basic Building Blocks for Reactive Programming
没有反应式编程的现代软件开发是难以想象的。响应式编程支持对用户输入、网络消息和其他事件做出响应的广泛的当代软件系统。虽然反应式编程是一个活跃的研究领域,但反应式概念的实现仍然具有挑战性。特别是,变化检测是实现反应式概念时的一个困难但不可避免的必要条件。通常,变更检测机制并不打算重用,而是与特定的变更解决机制紧密耦合。因此,开发人员经常不得不重新实现类似的抽象。仍然缺少用于变化检测的可重用原语。为了找到一个合适的原语,我们确定现有的反应概念的共性。我们发现了一类反应概念,基于状态的反应概念。所有基于状态的反应式概念都有一个共同的变化检测机制:它们检测表达式求值结果的变化。在此基础上,我们提出了一种可重用的原语活动表达式。通过抽象变化检测的繁琐实现细节,主动表达式可以简化反应式编程概念的实现。我们评估的设计活动表达式重新实现了一些现有的基于状态的反应式的概念,使用它们。由此产生的实现突出了活动表达式的表现力。当推理反应式编程概念时,活动表达式可以将基本部分与非基本部分分离。通过使用活动表达式作为变更检测的原语,反应式语言构造和运行时支持的开发人员现在可以专注于设计应用程序员应该如何对变更做出反应。最终,我们希望主动表达式能够鼓励人们尝试新的反应式编程概念,并由此产生更多的可供探索的概念。
2017-03-31 cs.PL cs.SE
Reactive Probabilistic Programming
同步建模是程序设计语言(如Lustre、Esterel或Scade)的核心,通常用于实现安全关键控制软件,例如,飞机的电传操纵和发动机控制。然而,到目前为止,这些语言对建模不确定性(软件环境或行为的概率方面)的现代支持有限,尽管建模不确定性是设计控制系统时的主要活动。在本文中,我们提出了第一个同步概率程序设计语言ProbZelus。ProbZelus保守地提供了编写控制软件的同步语言的设施,具有概率结构来建模不确定性并执行循环中的推理。我们提出的语言的设计和实现。我们提出了概率流函数的测度论语义和一个简单的类型纪律来分离确定性和概率表达式。我们展示了一个语义保持编译成一个一阶函数语言,适合于一个简单的演示推理算法的流模型。我们还重新设计了延迟采样推理算法,以提供高效的流式推理。结合对几个反应式应用程序的评估,我们的结果表明,ProbZelus可以设计反应式概率应用程序和高效的有界内存推理。
2020-04-09 cs.PL
Bidirectional Reactive Programming for Machine Learning
Inria(法国国家信息与自动化研究所);Google DeepMind(谷歌DeepMind)
本文提出一种支持向后递推的双向反应式编程构造,并证明其能自然表达反向传播、批归一化、双向RNN及强化学习等机器学习核心算法。
2023-11-28 cs.LG cs.PL
Tempo: Reconstructing Synchronous Reactive Programming with OCaml 5 Effects
Univ. Orléans, INSA Centre Val de Loire, LIFO UR 4022(奥尔良大学,中央卢瓦尔河谷国立应用科学学院,LIFO UR 4022)
研究能否在普通OCaml 5内重构同步响应式编程核心机制,提出基于代数效果和深度处理程序的Tempo库运行时,通过效果操作界定暂停点、处理程序具体化延续为任务,比较研究量化其开销并确定主导成本的运行时机制。
2026-07-28 cs.LO cs.PL
ROSY: An elegant language to teach the pure reactive nature of robot programming
Universidade do Minho(米尼奥大学);INESC TEC(葡萄牙系统与计算机工程研究所)
机器人技术非常有趣,长期以来一直被认为是教授编程的好方法,同时与数学、物理或电子等工程和科学的其他分支建立了鼓舞人心的联系。虽然机器人和编程之间的这种共生关系被认为是非常有益的,但教育方法往往觉得有必要隐藏机器人系统的潜在复杂性,但结果是无法将机器人编程的反应本质传递给未来的机器人专家和程序员。本文介绍了ROSY,一种通过机器人技术教授新手程序员的新语言。它的函数式风格既熟悉高中代数背景,又体现了机器人编程固有的反应性。在更高的抽象层次上工作也教导了将机器人软件分解为交互控制器集合的有价值的设计原则。尽管它很简单,但ROSY是完全有效的Haskell代码,与ROS生态系统兼容。我们通过演示如何轻松清晰地表达非平凡的应用程序,揭示其良好的功能编程基础,并开发支持Web的机器人编程环境,为我们的语言提供了令人信服的案例。
2019-11-08 cs.PL cs.RO
Diamonds are not forever: Liveness in reactive programming with guarded recursion
当设计函数式反应式编程(FRP)的语言时,主要的挑战是为用户提供一个简单、灵活的界面,以便在高抽象级别上编写程序,同时确保所有程序都可以用低级语言有效地实现。为了迎接这一挑战,一个新的家庭的模态FRP语言已被提出,在中野的守护不动点算子的变种用于编写递归程序,保证属性,如因果关系和生产力。作为一个明显的扩展,也有人建议使用线性时态逻辑(LTL)作为一种通过Curry-Howard同构进行反应式编程的语言,允许将终止,活性和公平性等属性编码在类型中。然而,这两个想法是相互冲突的,因为不动点算子将非终止性引入到应该提供终止保证的归纳类型中。在本文中,我们表明,关于模态时间步长运营商的LTL的一个子模态的一个用于保护递归(而不是等同于他们),可以得到一个模态类型系统能够表达活性性质,同时保留权力的保护不动点运营商。我们介绍的语言活泼的RaTT,一个模态FRP语言与守卫不动点运算符和一个“直到”类型的构造函数在LTL,并显示如何编程的事件和公平的流。使用一个步骤索引的Kripke逻辑关系,我们证明了活泼的RaTT的业务性质,包括生产力和因果关系,以及终止和活性预期的LTL类型的属性。最后,我们证明了Lively RaTT的类型系统保证了不存在隐式空间泄漏。
2020-08-20 cs.PL
Categorical Semantics for Functional Reactive Programming with Temporal Recursion and Corecursion
函数式反应式编程(FRP)使得以声明的方式表达计算的时间方面成为可能。最近,我们发展了两种类型的FRP范畴模型:抽象过程范畴(APC)和具体过程范畴(CPC)。此外,我们发现,APC泛化CPC。在本文中,我们扩展APC与额外的结构。这个结构对与时间相关的递归和共递归运算符进行建模。我们表明,由此产生的分类模型概括了那些CPC施加额外的约束时间尺度。这个限制归结为排除了$ω$ -超级任务,它与芝诺的阿基里斯和乌龟悖论密切相关。
2014-06-09 cs.LO cs.PL
Reactive Imperative Programming with Dataflow Constraints
数据流语言为动态应用程序中指定对象之间的约束提供了自然支持,其中程序需要有效地对环境的变化做出反应。研究人员长期以来一直在研究如何通过将它们嵌入到过程语言中来利用Challow-constraints。然而,以前的混合命令式/并行系统需要语法扩展或专门的数据类型库来将命令式程序绑定到并行求解器。在本文中,我们提出了一种新的方法,顺利地结合了这两种范式,而不会给程序员带来不必要的负担。在我们的框架中,程序员可以定义主机命令式语言的普通命令,这些命令强制执行存储在“反应式”内存位置中的对象之间的约束。反应对象可以是宿主语言中的任何合法类型,包括基本数据类型、指针、数组和结构。约束在每次输入内存位置改变时自动重新执行,让程序表现得像电子表格,其中某些变量的值取决于其他变量的值。通过改变宿主语言的基本操作的语义来读取和修改对象,从而透明地处理约束求解机制。我们提供了一个正式的语义和描述我们的技术到C/C++的一个具体实施例,展示了如何有效地实现它在传统的平台上使用现成的编译器。我们讨论了相关的应用反应的情况下,包括增量计算,观察者设计模式,和数据结构修复。我们的实现的性能相比,特设问题特定的变化传播算法和以语言为中心的方法,如自调整计算和主体/观察者通信机制,表明所提出的方法是有效的,在实践中。
2011-04-12 cs.PL
A Formal Model for Direct-style Asynchronous Observables
像F#、C#和最近的Scala这样的语言提供了“异步”编程模型,旨在通过避免基于回调的编程模型中固有的控制反转来使异步编程更容易。本文提出了一种新的方法来集成异步模型与可观察流的反应式扩展模型。响应式扩展在.NET平台上最为知名,其编程模型的广泛使用的实现也存在于Java、Ruby和其他语言中。本文贡献了一个形式化的统一的“反应异步”模型的背景下,基于对象的核心演算。我们的正式模型捕捉到的异步可观的协议使用堆演化属性的本质。我们证明了一个主题约简定理,该定理意味着约简保持堆的演化性质。因此,对于良好类型的程序,我们的演算确保协议的异步可观的。
2015-11-02 cs.PL
Interactive Music and Synchronous Reactive Programming
本文介绍了Skini,一种交互式结构音乐的编程方法和执行环境。有了这个系统,作曲家用HipHop.js同步反应语言编写他的乐谱。然后,他们被执行,或发挥,在现场音乐会,在与观众的互动。该系统旨在帮助作曲家在作品的决定性和与公众互动的非决定性之间找到一个很好的平衡。每一个Skini评分的执行都会产生不同但美学上一致的解释。这部作品在音乐领域提出了许多问题。如何将构图和互动结合起来?当听众影响下一场演奏时,如何控制音乐风格?与生成音乐有什么可能的联系?这些都是Skini系统的重要问题,但它们超出了本文的范围,本文只关注该系统的计算机科学方面。从这个角度来看,主要的问题是如何编程的分数和在哪种语言?通用语言是不合适的,因为它们的基本结构(即,变量、函数、循环等)与表达音乐和音乐约束所需的结构不匹配。我们发现,同步程序设计语言是一个更好的适合,因为它们依赖于时间结构,可以直接用于表示乐谱,因为他们的可塑性,使作曲家很容易实验与艺术的变化,他们的初始分数。本文主要研究分数规划。它揭示了一个作曲家应该遵循的过程,从他的第一个音乐直觉到音乐作品的产生。本文介绍了一些摘录的编程的古典音乐作品,它然后精确地涉及到一个实际的录音。电子音乐和爵士乐的例子也提出了,与音频工件,以证明系统的多功能性。最后,简要介绍了过去的现场音乐会作为一个证据的可行性系统。
2020-06-04 cs.PL
Density-Based Semantics for Reactive Probabilistic Programming
针对概率同步语言仅对已调度方程定义语义的局限,提出两种与调度无关的基于密度函数流的语义(共迭代与关系语义),并利用关系语义证明了状态空间模型优化推理所需程序变换的正确性。
2023-09-07 cs.PL
Consistent Distributed Reactive Programming with Retroactive Computation
本文提出一种混合反应式/回溯式与命令式计算的编程语言核心演算,支持分布式信号源及数据丢失恢复,并通过定理和微基准测试保证时间一致性,为物联网分析提供基础。
2025-02-27 cs.PL
From Events to Reactions: A Progress Report
Syndicate是一种新的协调、并发程序设计语言。它在线程的共享一切范式和参与者的无共享方法之间占据了一个新的点。辛迪加演员通过一个精心控制的数据库交换信息,分享共同的知识,该数据库清楚地界定了对话的范围。这种方法显然简化了并行活动的协调。然而,使用Syndicate编程的经验表明,需要提高语言抽象的水平。除了编写事件处理程序和直接管理事件订阅之外,该语言还必须支持响应式编程。本文介绍了面向事件的辛迪加编程,然后描述了一个初步的设计,以增强它与新的反应式编程结构。
2016-06-20 cs.PL
Harmonizing Signals and Events with a Lightweight Extension to Java
当前对与周围环境无缝连接的需求使软件更具反应性。例如,这种需求在由物联网组成的系统中是显而易见的。这样的系统包括响应于外部或内部事件而周期性地更新的一组反应值,以在这样的更新被传播到其他反应值的意义上形成反馈流。实现这种反应值的两种有效方法已经被提出:基于事件编程中的事件机制和函数反应编程中的信号。这两种方法现在在几种语言中混合使用,如Flaptrix和REScala,这使得这些语言在模块化反应式软件实现方面表现突出。例如,REScala提供了一个丰富的API,其中包含将事件转换为信号的函数,反之亦然。在本文中,我们探索另一种更简单的方法在反应式程序设计语言的设计空间:事件机制与信号相协调,从而简化编程接口,主要是基于信号。基于这种方法,我们实现了SignalJ,一个简单的扩展Java的事件和信号。我们值得注意的发现是(1)事件可以表示为信号的更新,(2)这样一个有效的信号可以使用注释来表示,而不是为信号引入类型和构造函数,以进一步简化语言。本文的另一个贡献是SignalJ的形式化模型。由于事件和信号的机制可能相互干扰,这种混合有时会导致令人惊讶的行为。例如,信号的功能行为受到事件的命令性特征的影响。因此,理解这种混合的形式模型实际上很重要。核心演算,Featherweight SignalJ(FSJ),开发作为Featherweight Java的扩展,并提供证明,以确保FSJ的…
2018-03-27 cs.PL
Synthesizing Functional Reactive Programs
函数式反应式编程(FRP)是一种简化反应式程序构造的范例。有许多库实现了FRP的具体化,使用了抽象,如Application,Monads和Arrows。然而,找到一个好的控制流,正确地管理状态并在正确的时间切换行为,仍然是开发人员面临的一个重大挑战。一个有吸引力的替代方案是指定行为而不是编程,最近开发的逻辑:时间流逻辑(TSL)使之成为可能。然而,它还没有被探索到目前为止,如何控制流模型(CFM),从TSL规范合成,可以变成可执行代码,是与FRP上的库兼容。我们弥合这一差距,表明CFMs确实是一个合适的形式主义变成应用,一元,箭头FRP。我们证明了我们的翻译在现实世界的厨房定时器应用程序,我们翻译到桌面应用程序使用箭头化FRP库Yampa,一个Web应用程序使用的一元三便士GUI库,并使用应用硬件描述语言ClaSH硬件的有效性。
2019-05-23 cs.PL
Hop and HipHop : Multitier Web Orchestration
富应用程序融合了经典计算、客户端-服务器并发、基于Web的接口以及嵌入式系统中复杂的基于时间和事件的反应式编程。为了处理它们,我们通过HipHop扩展了Hop Web编程平台,HipHop是一种专用于基于事件的流程编排的特定领域语言。借鉴Esterel的同步反应模型,HipHop基于同步并发和抢占原语,这些原语是复杂反应行为的模块化设计的关键组件。由于Hop的自反性,HipHop能够处理Web应用程序的动态性,这与Esterel不同。通过一个音乐播放器的例子,我们展示了如何使用HipHop编排代码模块化地构建一个非平凡的Hop应用程序。
2013-11-30 cs.PL
Gavial: Programming the web with multi-tier FRP
开发Web应用程序需要处理它们的分布式特性以及用户输入和网络通信的自然兼容性。为了促进这一点,不同的研究人员已经探索了多层程序设计语言和功能反应式编程的组合。然而,现有的建议只采取了这种方法的一部分(应用程序的某些部分仍然是必需的)或保持天真,不考虑避免网络通信中的故障,网络流量开销,与XMLHttpRequest等常见API的兼容性等。第一个成熟的多层FRP设计和实现,允许将整个Web应用程序构建为功能反应程序。通过应用一些新的想法,我们证明,多层FRP实际上可以处理现实的重要实际方面的建设Web应用程序。与此同时,我们保留了FRP的声明性质,其中行为和事件具有直观的组合语义和清晰的依赖结构。
2020-02-14 cs.PL
Diva: A Declarative and Reactive Language for In-Situ Visualization
在大规模科学模拟中,使用自适应工作流管理进行现场可视化和分析已经成为一个日益增长的趋势。然而,协调自适应工作流与传统的过程程序设计语言可能是困难的,因为系统流是由不可预测的科学现象,这往往出现在一个未知的顺序,并可以逃避事件处理。这使得自适应工作流的实现繁琐且容易出错。最近,反应式和声明式编程范式已经被认为是其他领域中类似问题的合适解决方案。然而,有一个缺乏的研究,以适应这些方法在原位可视化和分析。在本文中,我们提出了一种语言设计和运行时系统开发自适应系统,通过声明式和反应式编程范式。我们说明了如何使用我们的方法实现自适应工作流编程系统,并证明它与燃烧模拟的用例。
2020-09-06 cs.HC cs.PL
Automated Verification of Reactive and Concurrent Programs by Calculation
反应式程序将传统的顺序编程结构与原语相结合,以允许与其他并发代理进行通信。它们在现代应用中无处不在,从组件系统和Web服务到网络物理系统和自主机器人。在本文中,我们提出了一个代数验证策略的并发反应式程序,与一个大的或无限的状态空间。我们定义了新的运营商来描述相互作用和状态更新,以及相关的方程理论。有了这个,我们可以计算一个反应式程序的指称语义,从而促进自动证明。值得注意的是,我们的推理支持迭代程序与反应不变量,Kleene代数的基础上,并行组成。我们通过验证反应缓冲区来说明我们的策略。我们的法律和战略是机械化的伊莎贝尔/UTP,我们的霍尔和他的统一编程理论(UTP)框架的实施,提供健全的保证和实际的验证支持。
2021-04-12 cs.LO cs.PL
ReactiFi: Reactive Programming of Wi-Fi Firmware on Mobile Devices
网络可编程性将需要处理未来增加的网络流量和不断变化的应用需求。然而,当前没有使用高级的、易于使用的程序设计语言来对Wi-Fi固件进行编程的方法。这阻碍了新网络服务/应用的快速原型设计和部署,并阻碍了Wi-Fi网络中的持续性能优化,因为所使用的硬件平台和Wi-Fi域都需要专业知识。在本文中,我们提出了ReactiFi,一种高级反应式程序设计语言,用于在移动消费设备上对Wi-Fi芯片进行编程。ReactiFi使程序员能够实现PHY,MAC和IP层机制的扩展,而无需Wi-Fi芯片的专业知识,从而允许新的应用和网络协议。ReactiFi程序直接在Wi-Fi芯片上执行,与在主CPU上执行相比,提高了性能和功耗。ReactiFi在概念上类似于函数式反应式语言,但专用于Wi-Fi固件的特定领域需求。首先,它可以处理底层平台特定的细节,而不会干扰Wi-Fi芯片的核心功能。其次,它支持关于应用程序的内存使用的静态推理,这对于通常内存受限的Wi-Fi芯片很重要。第三,它将计算之间的依赖关系的动态变化限制为动态分支,以实现关于计算顺序的静态推理。我们在两个真实案例研究中对ReactiFi进行了经验评估。我们的研究结果表明,在Wi-Fi芯片上执行应用程序时,而不是在操作系统内核或用户空间中执行应用程序时,吞吐量、延迟和功耗都得到了显着改善。此外,我们表明,与手动编写的C代码相比,ReactiFi的高级编程…
2021-03-04 cs.NI cs.PL
Using human-in-the-loop synthesis to author functional reactive programs
响应异步事件的程序编写起来很有挑战性;它们很难推理,测试和调试也很棘手。因为这些程序可能有一个巨大的输入时间和交错空间,程序员可能很容易错过角落的情况。我们建议应用合成,以帮助程序员更容易地创建程序,并在其正确性有更高的信心。我们已经写了一个有效的编码的功能反应式编程(FRP)语义的基础上的功能编程在玫瑰解除列表。我们证明,这种技术是最先进的,首先比较其性能对现有的两个合成工具,产生列表操作程序,然后通过合成一套基准完整的规格。我们还提出了一个交互式工具,在该工具中,程序员以输入/输出示例或不变量的形式提供一些初始部分规范;该工具通过合成两个候选程序来发现规范中的歧义,并给用户一个区分它们的输入;用户更新规范并继续迭代直到找到正确的程序。作为评估,我们展示了使用该工具的一套基准测试,从网络编程和物联网领域,走查一个现实的网络基准测试的样本交互,表明我们可以收敛到目标程序与易处理的互动数量。作为未来的工作,我们讨论对其他FRP语言进行编码,以探索元语言特征、允许合成更大程序的分解策略以及改进的程序员工具(例如GUI),以更容易地得出规范。
2019-09-24 cs.PL
Modal Reactors
复杂的软件系统通常具有不同的操作模式,每个模式都被设计为处理可能需要系统以某种方式响应的特定场景。将系统行为分解为相互排斥的模式和模式之间的离散转换是一种常用的策略,可以降低实现复杂性并提高代码可读性。然而,这样的能力通常以自包含的特定于领域的语言或特定于语言的框架的形式出现。本文中的工作旨在通过遵循Lingua Franca(LF)的多语言协调方法,将模态模型的优点带到主流程序设计语言中,其中逐字目标代码(例如,C、C++、Python、Typescript或Rust)封装在称为反应器的可组合反应组件中。反应器可以形成一个分布式网络,由定时和偶发事件触发,并发执行,并且可以分布在网络上的节点上。在LF模态模型,我们引入了精益扩展的概念,反应堆,使反应任务的协调工作模式的基础上。本文中概述的模态反应器的实现一般化到任何LF支持的语言,只有适度的修改,通用的运行时系统。
2023-01-23 cs.PL
Corps: A Core Calculus of Hierarchical Choreographic Programming
本文提出层次化编排编程概念,并设计了语言Corps,通过授权逻辑中的命题即类型解释,将数据所有权建模为模态,解决了通信非线性建模与逻辑对应问题。
2024-06-03 cs.PL
Adjoint Reactive GUI
大多数与计算机的交互是通过图形用户界面完成的。传统上,这些都是使用共享可变状态和回调以命令式方式实现的。这是有效的,但也很难推理和容易出错。函数式反应式编程(FRP)提供了一种优雅的选择,它允许以声明式的方式设计GUI。然而,大多数FRP语言是同步的,并不断检查新数据。这意味着FRP风格的GUI将在每个程序周期中"唤醒"。这对于像文本编辑器和浏览器这样的应用程序来说是有问题的,在这些应用程序中,长时间内通常什么都不发生,我们希望实现休眠直到新数据到达。在本文中,我们提出了一个异步FRP语言的GUI设计称为$λ_{\mathsf{Widget}}$。我们的语言提供了一个新的语义部件,GUI的构建块,它提供了一个自然的Curry-Howard逻辑解释和一个有效的实现策略。
2020-10-26 cs.PL
BPjs --- a framework for modeling reactive systems using a scripting language and BP
我们描述了一个新的通用框架模型驱动的工程,基于行为编程的一些进展。我们开发的工具统一了到目前为止在行为编程中所做的几乎所有工作,在一组通用的接口下。它的架构支持可插入的事件选择策略,这可以使模型更加直观和紧凑。程序状态空间可以使用各种算法来遍历,例如DFS和A*。此外,程序状态以使得能够使用并行和分布式算法扫描状态空间的方式表示。使用此工具创建的可执行模型可以直接嵌入到Java应用程序中,从而实现模型优先的系统工程方法,最初创建并验证模型,然后逐渐围绕模型构建工作应用程序。模型本身由一组用JavaScript编写的小脚本组成(因此称为“BPjs”)。使用各种案例研究,本文展示了一个宽松的程序设计语言与正式的模型分析工具相结合,创造了一种有效的方式来开发强大的复杂系统。此外,正如我们从我们运行的实验课程中所了解到的,JavaScript的使用使从业者更容易使用这个系统,从而更容易使用模型检验和模型驱动工程。除了为行为编程中的开发和案例研究提供基础设施外,该工具还被设计为行为编程和模型驱动工程中的研究和创新的通用平台。
2018-06-03 cs.FL cs.PL cs.SE
Spacetime Programming: A Synchronous Language for Composable Search Strategies
搜索策略是有效求解约束满足问题的关键。然而,在现有的约束求解器中编程搜索策略是一项艰巨的任务,并且基于约束的语言通常具有组合性问题。我们提出时空编程,一个范例扩展同步语言Esterel和定时并发约束编程回溯,创建和组成搜索策略。在这种形式中,搜索策略的组成方式与我们组成并发进程的方式相同。我们的贡献包括时空编程的设计和行为语义,以及证明时空程序是确定性的,反应性的和广泛的功能。此外,时空编程提供了一个基于约束的并发性的理论基础和约束求解的实际方面之间的桥梁。我们开发了一个原型的编译器,产生搜索策略与一个小的开销相比,硬编码的。
2019-09-24 cs.PL
Adding Real-time Capabilities to a SML Compiler
最近人们对采用函数式和反应式编程用于实时的【形】系统设计产生了很大的兴趣。为了开发实时的【形】系统,正朝着一种更具声明性的方法发展,其目的是提高软件的保真度。为了研究实时的【形】系统的函数式和反应式编程的好处,需要实时的【形】感知的函数式编译器和语言运行时。在本文中,我们研究了对现代标准ML编译器MLton的必要更改,以提供对实时的【形】执行的基本支持。我们详细介绍了我们目前的进展,在修改MLton与线程模型,支持优先级,分块对象模型,以支持实时的【形】垃圾回收,和低级别的修改,以执行实时的【形】操作系统的顶部。我们提出了初步的数字和我们正在进行的工作原型,它能够在x86机器上启动用MLton编译的ML程序。
2016-01-13 cs.PL
An Approach to the Implementation of Overlapping Rules in Standard ML
我们描述了一种在标准ML中编程基于规则的系统的方法,重点是所谓的重叠规则,即当其他规则被触发时仍然可以激活的规则。这样的规则是有用的,当实现基于规则的反应系统,并达到这种效果,我们展示了一个简单的实现Loyall的主动行为树,用于控制目标导向的代理在奥兹虚拟环境。我们讨论了我们的框架的实现使用面向实现这些系统的反应库。
2000-10-03 cs.PL
DeLaM: A Dependent Layered Modal Type Theory for Meta-programming
本文提出依赖分层模态类型理论 DeLaM,将分层模态类型理论扩展至依赖类型,在统一框架中支持代码组合执行与类型/项代码的内涵分析,从而为证明助手实现类型安全的策略机制奠定基础。
2024-07-08 cs.LO cs.PL
A Type-and-Effect System for Temporal Dependency Analysis of Render-based Reactive Programs
Boston University(波士顿大学)
本文提出响应式编程核心演算Willow,搭配时间感知类型与效果系统,可静态跟踪响应式程序的时间行为,检测导致非终止或性能下降的渲染级联与循环,其原型检查器经评估可支撑响应式程序时间正确性推理。
2026-07-30 cs.PL cs.SE
Dependent Types for Multi-Rate Flows in Synchronous Programming
同步程序设计语言出现于20世纪80年代,作为实现反应式系统的工具,它与来自物理环境的事件交互,并且通常必须在严格的时间约束下进行。在这份报告中,我们在ATS内部编码各种实时原语的实验同步语言称为前奏曲,其中ATS是一个静态类型的语言与ML类似的功能核心,支持依赖类型(的DML风格)和线性类型。我们表明,这些原语上施加的验证要求可以正式表示在ATS中的依赖类型。此外,我们修改了Prelude编译器,自动生成ATS代码从Prelude源。这个修改后的编译器允许我们仅仅依靠ATS中的类型检查来履行源于对Prelude代码进行类型检查的需要的证明义务。而ATS通常被用作通用程序设计语言,我们在此证明,它也可以方便地用于支持某些形式的高级静态检查的语言配备了较少的表达类型。
2017-02-08 cs.PL
Proceedings 6th Workshop on Mathematically Structured Functional Programming
第六次数学结构化函数式编程研讨会致力于从结构中推导功能。这是庆祝理论计算机科学对我们今天编写程序的直接影响。现代程序设计语言,特别是函数式语言,支持数学结构的直接表达,为程序员提供了强大而抽象的工具。如果没有monads,Haskell会在哪里?没有箭头的函数式反应编程?按推值调用而不进行预处理?这个研讨会是一个为那些寻求在数据和控制中反映数学现象的研究人员提供的论坛。第六届数学结构函数编程研讨会于2016年4月8日在荷兰埃因霍温举行,作为ETAPS 2016的一部分。有五个贡献的谈话和一个邀请谈话。
2016-04-01 cs.LO cs.PL
ProgramAlly: Creating Custom Visual Access Programs via Multi-Modal End-User Programming
University of Michigan(密歇根大学)
本文提出ProgramAlly系统,利用积木编程、自然语言和示例编程三种方式,让盲人用户自定义视觉访问程序,并通过12名盲人用户研究验证了其可行性与价值。
2024-08-20 cs.AI cs.HC cs.PL
Replicate, Reuse, Repeat: Capturing Non-Linear Communication via Session Types and Graded Modal Types
本文提出结合会话类型与分级模态类型,在保持线性基础的类型系统中精确支持共享通道等非线性并发模式,并用 Granule 语言验证其可行性。
2022-03-24 cs.PL
Implementing a Language for Distributed Systems: Choices and Experiences with Type Level and Macro Programming in Scala
多层程序设计语言通过在单个一致的代码库中开发分布式系统来降低开发分布式系统的复杂性。编译器或运行时将分布式系统的组件的代码分离,从而能够对诸如数据表示、串行化和网络协议之类的低级实现细节进行抽象。我们的ScalaLoci语言允许开发人员在类型级别声明不同的组件及其架构关系,允许关于分布和远程通信的静态推理,并保证跨组件的静态类型安全。编译器将多层程序分割成特定于组件的代码,并自动生成通信样板。组件之间的通信可以通过使用反应式编程声明性地指定组件之间的数据流来建模。在本文中,我们报告了我们的设计和我们的经验,我们的语言功能嵌入到Scala作为主机语言的实现。我们展示了如何结合Scala的高级类型级编程和它的宏系统来丰富语言的新抽象。我们评论的挑战,我们遇到的,我们为我们目前的实施和大纲的建议,一个改进的宏系统,以支持嵌入特定领域的抽象的用例开发的解决方案。
2020-02-14 cs.PL
A Generalized Modality for Recursion
中野的后期模态允许类型表示函数的输出不直接依赖于其输入,因此计算其不动点是安全的。事实证明,这种保护递归的想法在各种上下文中都很有用,从具有无限数据结构的函数式编程到类型论内部的步进索引公式。分类模型表明,后一种模态本质上对应于离散时间尺度的简单重新索引。不幸的是,现有的保护类型论遭受编程目的的重大限制。这些局限性源于这样一个事实,即后一种模态的表达能力不足以捕捉函数的精确输入-输出依赖关系。因此,守卫类型论拒绝许多生产性定义。结合守卫类型论和同步程序设计语言的见解,我们提出了一个新的模式守卫递归。此模态可以将时间尺度的任何行为良好的重新索引应用于类型。我们称这种重新索引为时间扭曲。文献中的几种模态,包括后来的模态,对应于固定的时间扭曲,因此作为我们的特例出现。
2020-08-03 cs.LO cs.PL
Proceedings of the 7th Workshop on Mathematically Structured Functional Programming
第七次数学结构化函数式编程研讨会致力于从结构中推导功能。这是庆祝理论计算机科学对我们今天编写程序的直接影响。现代程序设计语言,特别是函数式语言,支持数学结构的直接表达,为程序员提供了强大而抽象的工具。如果没有monads,Haskell会在哪里?没有箭头的函数式反应编程?按推值调用而不进行预处理?这个研讨会是一个为那些寻求在数据和控制中反映数学现象的研究人员提供的论坛。第七届数学结构化函数编程研讨会于2018年7月8日在英国牛津举行,隶属于FSCD 2018,作为FLoC 2018的一部分。有两个邀请的谈话。此外,方案委员会还挑选了四份论文全文和两份详细摘要。
2018-07-10 cs.LO cs.PL
Foundations of Total Functional Data-Flow Programming
声明式流编程(离散时间、时钟同步、模块化、以数据为中心)的领域分为领域专家青睐的数据流图范式和学术界青睐的函数式反应范式。在本文中,我们描述了一个框架的基础,统一的功能和数据流的风格,不同的FRP适当的显着的方式:它是基于集合理论,以匹配领域专家的期望,和两个范式对称地减少到一个低层次的中间地带,强烈的组合语义。该框架的设计是来自数学的第一原则,特别是coalgebraic coinduction和一个标准的关系模型的状态计算。这里介绍的抽象语法和语义构成了一种新颖的流程序设计语言的全部核心。
2014-06-09 cs.DM cs.PL
Layered Modal Type Theories
本文提出分层模态类型理论,通过引入分层机制支持元编程中的代码模式匹配,并赋予其简洁直观的语义。
2024-02-29 cs.LO cs.PL
A Behavior Tree-inspired programming language for autonomous agents
针对传统行为树模型随应用规模扩大显现的功能局限,本文提出受行为树启发的自主智能体函数式编程语言,解决响应式选择等核心问题并给出规范与Haskell实现,验证了其处理复杂行为的能力。
2024-11-26 cs.AI cs.PL cs.RO
Formal Semantics and Type System for Vega Data Transformations
Charles University(查理大学)
本文为 Vega 数据可视化语言定义了基于图的操作语义,并为其核心数据变换语言设计了类型系统,能够捕获常见错误并保证类型安全性。
2026-06-16 cs.PL
Asynchronous Modal FRP
提出Async RaTT模态语言用于异步FRP,通过异步延迟模态实现按需计算,并证明其因果性、生产性和无空间泄漏等操作性质。
2023-07-03 cs.PL
Direct Manipulation and Natural Language Programming, Together at Last?
University of California, Berkeley(加州大学伯克利分校)
该研究提出了支持直接操作与自然语言编程结合的编辑框架,通过被试内研究发现用户更倾向直接操作,为混合编辑模态的编程系统研究提供了方向。
2026-08-28 cs.HC cs.PL
Better Modeling the Programming World with Code Concept Graphs-augmented Multi-modal Learning
近年来,由于基于最新模型架构的自然语言处理学习方法的设计,代码建模取得了巨大的进展。尽管如此,我们认为,目前的国家的最先进的没有足够的集中在充分的潜力,数据可能带来的学习过程中的软件工程。我们的愿景阐述了利用多模态学习方法来建模编程世界的想法。在本文中,我们探讨了我们的愿景,其目标的基础上的概念图的标识符的目的是利用高层次的领域概念之间的关系,通过特定的语言结构操纵的基本思想之一。特别是,我们建议通过与基于我们的概念图的图神经网络联合学习来增强现有的预训练语言模型。我们进行了初步的评估,显示使用简单的联合学习方法的代码搜索模型的有效性,并提示我们进一步研究我们的研究愿景。
2022-02-21 cs.IR cs.PL cs.SE