问题标签 [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 投票
1 回答
104 浏览

haskell - 如何回顾前一刻

我每时每刻都在阅读按钮的状态(无论是否按下):

所有读取状态都存储eButtonState在网络描述中desc

当前时刻的状态1与前一时刻的状态相同时,该按钮被认为是新按下的0。因此,如果事件序列是一个列表,则函数将这样编写:

我想应用这个功能,eButtonState所以我会知道按钮是否是新按下的。

有可能吗?你会怎么做?如果有更好或更常见的想法或方法来实现这一目标,我将不胜感激。

0 投票
1 回答
102 浏览

haskell - 将元组 2 的事件流解压缩为两个流

在给定的反应香蕉中,Event t (a, b)您将如何引导它(Event t a, Event t b)

Traversable#sequence似乎用Monadfor(,)提供的一些实例来解决它,但Event t只是Functor.

0 投票
2 回答
233 浏览

haskell - 在 reactimate 中执行 MonadIO 动作

在响应式香蕉中,我尝试使用hArduino 包中的reactimate :: Event (IO ()) -> Moment ()一些操作运行,这是. 包装中似乎没有提供的功能。您将如何执行操作?ArduinoMonadIOArduino a -> IO aArduinoreactimate

0 投票
1 回答
86 浏览

haskell - Reactive Banana:备用按钮事件

我第一次尝试使用 Reactive Banana (WX) 在五个按钮之上显示诸如“按下按钮一”、“按下按钮二”等文本:

代码只是主要骨架。我目前无法做的是填充somethinghere方法。如前所述,如果例如按下按钮“One”,somethinghere则应返回参考ButtonsADT 数据One等。我试过了accumBunionWith但我认为我没有得到正确的机制。有什么帮助吗?

0 投票
1 回答
239 浏览

haskell - 反应性香蕉:状态单子与否?

我有一个基于 Reactive Banana 的界面(WX)。现在我对如何真正管理状态有不同的疑问:

  1. 我应该将状态视为Behavior我在代码中定义的 s 吗?

  2. 如果状态也依赖于外部“事件”,那么考虑 IORef 不仅与 GUI 相关会更好吗?

  3. 或者我可以使用 State Monad 吗?到目前为止,我看到的所有示例都定义了 IO 环境中的网络。有任何意义堆栈State Monad和如何?与Moment

0 投票
1 回答
72 浏览

haskell - Reactive Banana:数据中的更改状态

从使用法线Int保持计数器状态的 Reactive Banana Wx 中的 Counter 示例开始:

如何Int用更通用的方式替换和更新计数器data

我不知道如何用这样的count东西来引用内部函数:

任何想法?

0 投票
2 回答
269 浏览

haskell - 在响应式香蕉中,从多个线程触发处理程序操作是否安全?

触发火灾行动是否安全

来自编译反应香蕉图的不同线程?

0 投票
1 回答
196 浏览

haskell - Reactive Banana:如何使用来自远程 API 的值并将它们合并到事件流中

我在 WX 界面中使用 Reactive-Banana。按下按钮时,我需要从外部服务 API 检索值。

我有一个Behavior基于数据类型的泛型AppState,它基于函数转换(doSomeTransformation)“累积”转换后的变化。getRemoteValue转换后的值由事件传输,当按下界面上的按钮时,它们来自远程 API ( )。我编写了代表基本部分的代码的精简版本:

和阴谋集团:

我的问题是如何编写doSomeTransformation以及如何myRemoteValue将远程 API 值用作普通事件值。 changes来自banana-reactive 的签名如下:

它将包装我IO IntgetRemoteApiValue

所以基本上我怎么能从:

?

顺便说一句,我不确定拥有这个不同的函数签名是否更清晰: doSomeTransformation :: Int -> AppState -> AppState,其中Int值由 API 返回值表示。听起来像是两个Behaviors 和一个流。也许是解决问题的坏方法?

0 投票
2 回答
261 浏览

haskell - Reactive Banana:使用对外部 API 的参数化调用

从这里的上一个问题开始: Reactive Banana: how to use values from a remote API and merge them in the event stream

我现在有一点不同的问题:如何将Behaviour输出用作 IO 操作的输入并最终显示 IO 操作的结果?

以下是上一个答案中的代码已更改为第二个输出:

正如您所看到的,我正在尝试使用应用程序的新状态 -> getAnotherRemoteApiValue-> 显示。但它不起作用。

实际上有可能这样做吗?

更新 基于以下 Erik Allik 和 Heinrich Apfelmus 的答案,我有当前的代码情况 - 有效:):

0 投票
1 回答
86 浏览

haskell - 创建多态函数的事件流 - 可能吗?如果是,如何?

我目前正在使用反应香蕉学习 FRP,并想创建一个随机函数流。我想出了这个:

它似乎有效,我可以这样使用它:

但是,当然,当我尝试共享该流以生成不同类型的数字时:

类型检查器抱怨,我理解。然后我尝试将函数概括为以下内容:

然后 GHC 抱怨非法多态签名以及我是否想启用 ImpredicativeTypes。我做了很长一段时间试图注释所有内容以使其工作,但 GHC 总是抱怨它无法匹配类型。

我的问题是 - 有可能做我想做的事吗?我真的需要 ImpredicativeTypes 还是我做错了?

我认为 RankNTypes 应该足够了,但我还没有使用此类扩展的经验。

提前致谢!

编辑:

作为记录,现在我基于有用响应的解决方案是: