程序员常刷题西雷亚硅mply雷亚莫如!使用响应式需求编程(RDP)模型在Haskell中进行声明式编排。 RDP应用程序是在空间和时间中编排的信号和声明效果的复杂交响曲。RDP是有状态网格上的无状态逻辑。每个人都知道“副作用不是成分”。但这种说法只适用于一般情况。有一些有用的副作用子集具有很好的特性——例如幂等性、交换性、单调性。对于一小部分效果,可以实现与最好的纯守法编程模型相当的等式推理和重构。我称这些为声明性效果。任何纯函数式编程的拥护者也都知道效果很少是必不可少的,即足够的聪明才智会找到大多数问题的完美解决方案。仅仅通过一点点聪明和一些高度受限的声明性效果,还能实现多少?响应式需求编程就是为了回答这个问题而开发的。在RDP中,唯一的作用是观察资源的活动需求集。这些需求通常是查询或控制信号。RDP的效应模型的灵感来自物理学和心理学中的对称观察者效应:人们无法在不影响其行为的情况下观察系统。由于观察意味着影响,因此观察的唯一目的是影响。因此,查询和控制只需要一个概念。需求表示为长期存在的信号。信号处理是本地的、模块化的和可组合的。