- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
行为普遍被定义为“随时间变化的值”s1。
为什么?时间作为不同值的依赖/参数是非常罕见的。我对 FRP 的直觉是将行为作为随事件变化的值;它更常见,更简单,我提出了一个更有效的想法,并且可扩展性足以支持时间(tick 事件)。
例如,如果您编写一个计数器,您不关心时间/关联的时间戳,您只关心“单击增加按钮”和“单击减少按钮”事件。
如果你编写一个游戏并想要一个位置/力量行为,你只关心WASD/箭头键举行的事件等(除非你禁止你的玩家在下午向左移动;多么不公平!)。
那么:为什么时间是一个考虑因素呢?为什么要时间戳?为什么有些库(例如 reactive-banana
、reactive
)将其发展到了 Future
、Moment
的程度> 值(value)观?为什么要使用事件流而不是仅仅响应事件发生?所有这些似乎都使一个简单的想法变得过于复杂(事件变化/事件驱动的值(value));有什么收获?我们在这里解决什么问题? (如果可能的话,我也希望得到一个具体的例子和一个精彩的解释)。
最佳答案
Behavior
s 不同于 Event
主要是 Behavior
现在有一个值,而 Event
仅当新事件到来时才具有值。
那么“现在”是什么意思呢?从技术上讲,所有更改都以事件流上的推或拉语义来实现,因此我们只能表示“截至此 Behavior
的最后一个事件的最新值”。但这是一个相当复杂的概念——实际上“现在”要简单得多。
为什么“现在”更简单的原因可以归结为 API。以下是 Reactive Banana 的两个示例。
最终,FRP 系统必须始终产生某种外部可见的变化。在 Reactive Banana 中,reactimate :: Event (IO ()) -> Moment ()
促进了这一点消耗事件流的函数。没有办法拥有Behavior
触发外部变化——你总是必须做类似 reactimate (someBehavior <@ sampleTickEvent)
的事情在具体时间对行为进行采样。
行为是 Applicative
不像Event
s。为什么?好吧,我们假设 Event
是一个应用程序,想想当我们有两个事件流时会发生什么 f
和x
并写 f <*> x
:由于事件发生在不同的时间,f
的机会和x
同时定义的是 ( almost certainly ) 0。所以 f <*> x
总是意味着空的事件流是无用的。
你真正想要的是f <*> x
缓存每个值的最新值并“始终”获取它们的组合值。就事件流而言,这确实是一个令人困惑的概念,因此让我们考虑 f
和x
为所有时间点取值。现在f <*> x
也被定义为对所有时间点取值。我们刚刚发明了Behavior
关于haskell - 为什么FRP将时间作为值(value)的一个因素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25568712/
我需要实现一个行为: 点击元素时 - 会发生一件事 但是当单击并按住超过一秒时,会发生其他情况(例如元素变得可拖动),然后第一个事件永远不会触发 我想我知道如何捕获点击并按住类型的事件,但如何区分第一
1 frp介绍 注意事项: 1)服务器端和内网机器端下载的版本要相同,否则可能会影响内网穿透 2)根据服务器系统选择合适的脚本 脚本主要分为服务端与客户端文件 1.外网服务器端用到的是Frps和Frp
1 frp介绍 注意事项: 1)服务器端和内网机器端下载的版本要相同,否则可能会影响内网穿透 2)根据服务器系统选择合适的脚本 脚本主要分为服务端与客户端文件 1.外网服务器端用到的是Frps和Frp
我目前正在阅读 WebSharper 的文档.在 the section about FRP , 它指出: Functional Reactive Programming (FRP) typicall
我目前正在研究我的下一个项目。这是在一个预先规划阶段,所以这个问题只是为了了解现有技术。 设置 我有一个具有多个输入和输出的有向无环图 (DAG),现在考虑人工神经元网络: 处理这种结构的常用方法是在
我可以构建一个PID controller在 Haskell FRP 库中 netwire使用为 Wire 提供的 ArrowLoop 实例中的 loop。 我还可以使用 switch 实现 Cont
我目前正在尝试了解箭头和 FRP,并且遇到了一个问题,我似乎无法将其映射到 FRP,即如何对道路网络进行建模。 我想我可以将道路网络建模为箭头,其中每个箭头代表一个路段。它在地点和时间接受汽车流,并生
我正在 Scala 中实现 FRP 框架,我似乎遇到了问题。出于某种想法,这个问题我决定限制我的框架的公共(public)接口(interface),以便只能在“现在”中评估行为,即: behavio
我一直在使用 Haskell(特别是 Yampa)中的 Arrowized FRP 库,但我不太清楚如何进行“连续”切换。我的意思是信号通过信号函数(下面的 sf),它本身就是一个信号(如图像的上半部
在经典 FRP 的最新实现中,例如 react 香蕉,有事件流和信号,它们是阶跃函数( react 香蕉称它们为行为,但它们仍然是阶跃函数)。我注意到 Elm 只使用信号,并没有区分信号和事件流。此外
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提出有关书籍、工具、软件库等建议的问题。您可以编辑问题,以便可以用事实和引用来回答它。 7年前关
我必须写一篇关于函数响应式(Reactive)编程 (FRP) 系统优化的论文。 这是我目前找到的引用资料。 使用广义代数数据类型进行函数式响应式(Reactive)编程的动态优化,Henrik Ni
我想在 Haskell 中学习 FRP,但是决定使用哪个库有点困难。许多尝试似乎已经失败,有些似乎又复活了(例如最近在 Yampa 上的事件)。 从我读到的内容来看,FRP 似乎有两种“类型”:一侧是
我必须写一篇关于函数响应式(Reactive)编程 (FRP) 系统优化的论文。 这是我目前找到的引用资料。 使用广义代数数据类型进行函数式响应式(Reactive)编程的动态优化,Henrik Ni
我刚开始使用 Bacon.js这真的很棒。尽管有时我确实很难找到正确的做事方式。例如,我想要一个带有可拖动部分的 Angular Directive(指令)。我不要脸的扒进别人的jsBin并尝试将该代
我正在使用BaconJS创建两个事件流,如下所示: # Wait for start of the module sStart = Bacon.fromCallback module.onStart.
有人说 FRP 是在不显式管理状态的情况下处理事件流。例如这个人: http://www.slideshare.net/borgesleonardo/functional-reactive-progr
我的问题是关于 FRP 中“状态机”对象的可变性。我正在评估Bacon.js's Observable.withStateMachine . 我的领域是交易机器人。我有一个“订单”的源事件流,它实际上
我正在开发一个使用 React 的项目,并且希望实现一种 FRP 形式来处理给定对象以任何给定形式更改时的事件。 我对 Bacon.js 和 RX.js 做了一些研究,但仍然有点不确定如何充分利用这些
今天,我读到了 FRP(函数式响应式(Reactive)编程)。但是,我不知道这在引擎本身中有多少适合。 看完Gerold Meisinger's article ,我的问题是,是否值得使用 FRP
我是一名优秀的程序员,十分优秀!