首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Haskell Reactive-Banana FRP和事件循环

Haskell Reactive-Banana FRP和事件循环
EN

Stack Overflow用户
提问于 2016-06-01 21:18:07
回答 1查看 360关注 0票数 2

我仍然在试图将我的头脑围绕在Haskell和FRP上。具体地说,我已经完成了一些使用反应式香蕉包的例子,并开始使用FRP。

但是,我仍然不理解事件网络如何知道输入事件何时发生。我的理解是,与NodeJS不同的是,它有一个不断检查用户输入的事件循环,而FRP使用一个不同的框架来“等待”或“检查”用户输入或外部信号。

从我的阅读来看,FRP让时间变得清晰。通过将时间与事件或行为相结合,网络始终知道外部刺激何时启动。

我读过很多Conal,Hudak等人的论文。而且解释太技术性了。请提供较少的技术解释。

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2016-06-02 17:27:37

记住FRP和平台特定的“胶水代码”之间的区别是很有用的,FRP负责从基本的EventBehavior构建有趣的Event,而平台特定的“胶水代码”提供基本代码的集合,比如当前的鼠标位置或键盘按键。

在Reactive-Banana库中,这种区别反映在模块结构上,Reactive.Banana.Combinators关注第一部分,而Reactive.Banana.Frameworks关注第二部分。

现在,理解第二部分(基本Events)如何工作对于理解第一部分(FRP)如何工作并不重要;事实上,不同的库可能会做出非常不同的实现选择。

也就是说,在Reactive-Banana库中,事件网络本质上是一个巨大的回调函数,它将自己注册到外部事件源(在库中称为AddHandler )。每当这些外部源中的一个调用回调函数时,回调函数将按依赖关系顺序遍历EventBehavior的图,对内部状态执行必要的更新,最后运行之前注册到reactimate的操作。

FRP的神奇之处在于,库用户看不到任何这些实现细节,尽管有时知道“事件网络=一个巨大的回调函数”是很有用的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37569894

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档