问题标签 [reactive-banana]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
1231 浏览

haskell - 反应香蕉中的行为

请原谅我,我刚刚开始研究反应性香蕉和 FRP。

reactive-banana 的作者根据我的建议做了这个例子,他创建了一个可以增加和减少的计数器。他使用 accumE 函数来累积事件。我想我能够对 Event 类型有所了解,并且能够用它测试很多东西,但后来我记得还有 Behavior。我进行了调查,但似乎该行为旨在用于类似情况;修改现有变量,就像 accumE 处理事件一样。

行为是什么意思,它的用例是什么?

0 投票
2 回答
312 浏览

haskell - 使用 reactive-banana-wx 的 UI 输入

使用 reactive-banana 时如何获取 ui 元素的内容?event0 返回一个类型为 的事件Event (),它具有单元类型而不是控件的类型。event1 接受 type 的事件Event w (a -> IO ()),但 command 的 type Event w (IO ())。mapAccumE 和 mapAccumB 将纯函数作为参数,因此get text foo不能与它们一起使用。

0 投票
1 回答
2456 浏览

haskell - 我使用的是反应香蕉吗?

这是一个使用 reactive-banana 库的 Haskell FRP 程序示例。我才刚刚开始对 Haskell 有所了解,尤其是还没有完全理解 FRP 的含义。我真的很感激对下面的代码的一些批评

这里有一个要点:https ://gist.github.com/1099712 。

我特别欢迎任何关于这是否是 accumE 的“好”使用的评论,(我不清楚这个函数每次都会遍历整个事件流,尽管我猜不是)。

此外,我想知道如何从多个套接字中提取消息 - 目前我在永远的内部有一个事件循环。作为一个具体的例子,我将如何添加第二个套接字(zeromq 用语中的 REQ/REP 对)来查询计数器内 IdMap 的当前状态?

0 投票
1 回答
378 浏览

haskell - 安装反应香蕉 wx

当您尝试安装库 reactie-banana-wx 时,出现错误:

安装命令:

请帮助纠正问题。

0 投票
1 回答
698 浏览

haskell - 反应香蕉可以处理网络中的循环吗?

我们有这样的代码:

您可以看到 evtAutoLayout 输入 guiState,而 guiState 又输入 evtAutoLayout——所以那里有一个循环。这是故意的。自动布局调整 gui 状态,直到达到平衡,然后它返回 Nothing,因此它应该停止循环。当然,新的模型变化可以重新开始。

但是,当我们把它放在一起时,我们在编译函数调用中遇到了一个无限循环。即使 autoLayout = Nothing,它仍然会在编译期间导致堆栈溢出。

如果我删除 guiState 中的联合调用并从图片中删除 evtAutoLayout ......

它工作正常。

有什么建议么?

0 投票
2 回答
175 浏览

haskell - 如何在反应香蕉中处理多个窗口和单个数据结构

我想知道反应香蕉是如何设计来处理以下情况的:

假设我有一个中央数据结构。用户能够自由地打开和关闭任意数量的不同类型的窗口,这些窗口既显示数据又允许用户对其进行修改。

因此,鉴于这种情况的性质,我认为仅仅尝试创建一个大型网络并不会奏效。这是每个窗口都有一个网络并且以某种方式连接的东西吗?

在像这样的其他情况下,我将数据结构放在每个人都向其发送更新的单个通道后面。然后数据结构将“发布”所有窗口都“收听”的更新(触发事件)。

0 投票
1 回答
378 浏览

haskell - reactive-banana:触发包含行为最新值的事件

假设我有一个事件触发器,我想在触发时做两件事。首先,我希望它更新一些行为的价值。其次,如果满足其他条件,我希望它使用更新的行为值触发另一个事件send_off。以代码形式表示,假设我有

那么问题来了:我在里面放什么??????以便send_off发送最新的behavior值,我的意思是该值包括刚刚应用于它的触发器的更新。

不幸的是,如果我理解正确,行为的语义是这样的,更新的值不会立即提供给我,所以我在这里唯一的选择本质上是复制工作并重新计算更新的行为值,以便我可以立即使用它在另一种情况下,即填写?????? 有类似的东西

现在,在某种意义上,我可以通过使用 Discrete 而不是 Behavior 立即使行为中的更新信息对我可用,但这实际上等同于给我一个与我的原始事件同时触发的事件使用更新的值,除非我错过了一些东西,否则反应香蕉不会让我只有在其他两个事件同时触发时才能触发事件;也就是说,它提供事件的并集,但不提供交集。

所以我有两个问题。首先,我对这种情况的理解是否正确,特别是我是否正确得出结论,我的上述解决方案是解决它的唯一方法?其次,纯粹出于好奇,开发者有没有关于如何处理事件交叉点的想法或计划?

0 投票
1 回答
844 浏览

haskell - 反应香蕉:如何创建一个 AddHandler?

我目前正在尝试通过 Heinrich Apfelmus 的reactive-banana来了解 FRP ,与我看过的其他库相比,它似乎是一个文档齐全且简单的库。

但是,我无法理解 AddHandler类型。假设我想使用GLFW来获得鼠标按钮点击,这样我就有了类似eMouseButton :: Event (). 查看示例,似乎我不得不以某种方式使用fromAddHandler,但我不知道如何组合该AddHandler论点。我想我必须以newAddHandler某种方式使用,但是如何?

我想一个如何连接reactive-banana到其他东西的例子wx会很有帮助。

0 投票
1 回答
274 浏览

haskell - 我在反应香蕉中的“总和事件”有什么问题?

我正在学习响应式香蕉并打算在服务器端应用程序中使用它。我有一些 RxJs 的背景,所以我习惯在那里将事件与不同的组合器结合起来。所以我从简单的事件组合器示例开始。我试图制作一个简单的反应香蕉示例,它将两个整数事件组合成一个 sum 事件。我知道为了能够组合来自不同事件的值,我必须首先将它们变成行为,然后进行组合,最后将其变成一个新事件。我是这样做的:

完整的可运行示例可以在Gist 1594917中找到。

这里的问题是,当新值出现在其中一个事件(e1,e2)中时,sumE 事件被正确触发,但它包含一个陈旧的值。这显然是由于步进器的工作方式(行为的值在事件发生后“稍微改变”)。我尝试用 Discrete 替换 Behavior,结果相同。

有没有一种简单的方法可以使这种事件组合器正常工作?

0 投票
2 回答
190 浏览

haskell - 你如何删除反应香蕉中的重复事件

在反应香蕉中,我有一个事件流,它产生一系列数字,其中一些连续重复多次(我不关心所有重复,只是顺序重复)。如何修改该事件流以仅包含非顺序重复项?

我尝试使用更改将其转换为一种行为,认为该行为只会在事件是新数字时“更改”,而是每次收到新的输入事件时行为都会触发更改事件。