推荐阅读/教程以了解反应性香蕉 FRP 库 [关闭]

Posted

技术标签:

【中文标题】推荐阅读/教程以了解反应性香蕉 FRP 库 [关闭]【英文标题】:Recommended reading/tutorials to understand reactive-banana FRP library [closed] 【发布时间】:2012-03-01 21:31:49 【问题描述】:

我对 FRP(函数响应式编程)reactive-banana haskell 库很感兴趣。你会推荐一个新手阅读什么来理解反应香蕉背后的理论?据我了解,这个领域已经取得了一些进展,不同的 FRP 库使用不同的方法,所以我认为任何 FRP 论文都不会这样做。

【问题讨论】:

+1 仅用于名称“反应性香蕉”。我对FRP一无所知,所以我也很欣赏那里的人。 【参考方案1】:

不幸的是,我还没有编写任何全面的文档或教程,主要是因为响应式香蕉库仍在不断变化。

这意味着,目前,您必须在相当强大的 Haskell 知识的支持下,自己从各种来源中找出问题。我可以在这里做的是列出各种来源和灵感。

可直接用于反应香蕉的文档

真的很短 introduction — 主要回答了“为什么我需要了解 Applicative Functors 才能理解 reactve-banana?”的问题 Tutorial slides [PDF] — 解释和可视化行为和事件的概念 API Reference Example Code — 示例一开始很简单,对于理解库非常有用。 Model implementation — 查看源代码。有助于了解编程模型的细节。

由于反应香蕉是基于 Conal Elliott 的作品,他的作品是一个很好的来源

"Functional Reactive Animation" — FRP 概述虽然有些过时,但一般。 "Declarative event-oriented programming" — 演示 FRP 用于 GUI 编程的实用示例。对一般编程哲学的出色介绍。 "Push-pull functional reactive programming" — 很好的读物,有助于了解模型如何根据应用程序和其他仿函数映射到 API。

【讨论】:

谢谢。这就是我一直在寻找的——你自己用来制作这个库的资源。 如果您确实设法建立了全面的文档,那么也许您可以通过出售它来赚一些额外的钱,就像一本 Yesod 书。 @DanBurton:好主意!不过,需要非常全面才能有资格成为一本书。我会想办法的。 你也有某种***或维基书吗?这是组织志愿信息的好方法。 @TingL Haskell wiki 可用于此目的。【参考方案2】:

基本上有两种来源:

    Conal Elliott 的论文“Simply Efficient Functional Reactivity”(以及导致此论文的 Conal 的其他工作)。 Apfelmus 的博客。文章“Reactive Banana and the Essence of FRP”可能是一个很好的起点。

reactive-banana 的设计和语义大量借鉴了 Conal 的论文和他的“reactive”库(从 reactive-banana-0.2 开始)。 Apfelmus 博客上的 cmets 讨论了这背后的许多原因,以及库之间的差异。不幸的是,“reactive”有一些与它的“switcher”功能相关的不良行为,所以它被排除在reactive-banana之外。关于这个问题的性质和解决方法已经有很多研究了,看起来reactive-banana-0.5 可能会引入一些版本的“switcher”。

【讨论】:

递归!这个问题起源于对 Apfelmus 博客的评论,他回答说“在 SO 上转发,我会在那里回答”。 Apfelmus 的帖子热切期待...... 对我来说,“Functional Reactive Animation” (conal.net/papers/icfp97) 比 Simply Efficient 论文更好地介绍了 FRP。虽然实现方式不同,但是前者的思路和灵感都很清晰。【参考方案3】:

这不是反应香蕉,但我发现这个系列有助于理解 FRP,从头开始构建一个小型乒乓球游戏。

https://github.com/leonidas/codeblog/blob/master/2012/2012-01-08-streams-coroutines.md https://github.com/leonidas/codeblog/blob/master/2012/2012-01-17-declarative-game-logic-afrp.md

【讨论】:

【参考方案4】:

我写过关于 FRP 和反应性香蕉的博客。 看看这里,看看它是否有用:

http://alfredodinapoli.wordpress.com/2011/12/24/functional-reactive-programming-kick-starter-guide/

HTH,

一个。

【讨论】:

【参考方案5】:

我和你在同一条船上,我在寻找资源时找到了"FRP explanation using reactive-banana"。它针对 FRP 初学者。

【讨论】:

【参考方案6】:

最近我将我的“流式传输”包移植到了“reactive-banana”。该软件包旨在实时处理 MIDI 消息,例如用于生成伴奏、音乐游戏和一些有趣的效果。

http://code.haskell.org/~thielema/reactive-balsa/

我是如何开始学习响应式香蕉的?我刚问了包的作者,他很友好地帮我做了第一步。迈出第一步后,我发现包的 Haddock 文档非常有帮助。现在您可以在包作者和我之间进行选择,为您提供有关如何开始使用响应式香蕉的初步提示。 :-)

【讨论】:

以上是关于推荐阅读/教程以了解反应性香蕉 FRP 库 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

FRP - 事件流和信号 - 仅使用信号会丢失啥?

请推荐一个 Mono(即 C#)音频阅读库 [关闭]

选择哪种 FRP 包? [关闭]

使用frp配置内网(穿透[保姆级教程])

反应香蕉:触发事件,包含行为的最新值

使用带有 html 模板的反应 [关闭]