问题标签 [frp]

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 回答
120 浏览

haskell - Reactive-Banana 中溢出函数的事件处理顺序是什么?

我对此进行了测试,似乎事件处理的顺序与源事件中列表的顺序相同。我不认为我可以依赖它,因为文档仅说明:

发出同时发生的事件。严格来说,我们有溢出。收集 = id

如何使用以下规范创建类似于溢出的函数:

发出连续的事件发生,并保证在第一个和最后一个之间不会触发其他事件

还是我应该尝试不同的方法?我正在尝试在 Reactive-Banana 中实现宏功能

0 投票
1 回答
218 浏览

haskell - Reactive-banana:来自 fromPoll 的最新值

我正在用反应香蕉在 Haskell 中写一个音乐播放器。我遇到的一个问题是使用 fromPoll 获取最新值。我想让用户在播放时有选择地选择曲目的一部分。我的代码看起来像这样:

上面,getPosition是一个偏函数,在真正开始播放之前返回Nothing 。问题是一旦addCmdEvent第一次触发,bPosition仍将保持Nothing值。eSetStart/End基于此计算它们的值。只有这样bPosition 才会更新,这是下次触发addCmdEvent时使用的值。依此类推,可以说,值将始终“减一”。

有一个相关的SO question,但在这种情况下,存在一个“触发”事件,可用于计算行为的新值。使用 fromPoll 可以实现类似的事情吗?

0 投票
2 回答
390 浏览

haskell - 反应性香蕉节流事件

我想在反应香蕉中实现某种类型的事件限制。它应该这样工作,如果从最后一个通过的事件到达的时间少于 delta 秒,则不会让事件通过。如果它没有通过,那么它会被存储并在最后一次触发事件的 delta 秒后触发。

下面是一个为时间戳数字列表实现此功能的程序。有没有可能把它翻译成 reactive-banana ?

另外,在反应香蕉中,我如何在其他事件出现后 x 秒触发一个事件?

0 投票
2 回答
701 浏览

haskell - 使用 ghc 7.0.4 在基于 redhat 的 linux 上安装响应式香蕉 wx 或 wx

嗨,我正在尝试安装,(无需更新或安装最新的编译器),reactive-banana-wx 并且其中一个要求失败

这是错误

当我尝试 cabal 安装 wxcore、wx 或 wxc 时,他们都说失败并指向需要 wxc。

这是错误

如果有用的话,这是我的编译器信息

0 投票
1 回答
171 浏览

haskell - 实现 zipE :: Event ta -> Event tb -> Event t (a,b)

一般来说,我对反应性香蕉和 FRP 很陌生,所以如果我遗漏了一些明显的东西,我深表歉意。

对于我的项目(一个GDB/MI前端),我对 GUI 和前端逻辑模块都使用了响应式香蕉(版本 0.6.0.0)。前者效果很好,但对于后者,我显然需要额外的组合器。

其中之一是zipE :: Event t a -> Event t b -> Event t (a, b)。不幸的是,我能想出的只是 NetworkDescription monad 中的一个解决方案,它changes在事件类型中使用并且不是通用的:

当然,我对此并不满意。因此,我想问如何在不使用的情况下实现一个通用的 zipE 函数changes(不鼓励将其用于非 GUI 目的)。

其他尝试失败,例如

导致元组的第一个元素被移动一个 - 我猜是由于stepper. 但是我看不到如何从没有stepper(或accumB就此而言)的事件中获取行为,也看不到如何将函数应用于没有行为的事件。总的来说,在泛型类型的情况下,我看不到如何为步进器提供初始值。

0 投票
2 回答
325 浏览

haskell - 具有状态更新的状态相关事件处理

我想为我的项目(一个GDB/MI前端)使用 FRP(即反应香蕉 0.6.0.0)。但是我在声明事件网络时遇到了麻烦。

有来自 GUI 的命令,有来自 GDB 的停止事件。两者都需要处理,处理它们取决于系统的状态。

我目前的方法看起来像这样(我认为这是显示问题所需的最低复杂性):

handleCommandhandelStopped根据当前状态对命令和停止事件做出反应。可能的反应是调用(同步)GDB I/O 函数和触发状态更新事件。例如:

问题是,当f由 评估时accumEstate'有时与 不同state

我不是 100% 确定为什么会发生这种情况,因为我不完全理解时间和同时性的语义以及反应香蕉中“反应”的顺序。但我猜想,由触发的状态更新函数可能会在改变状态handleStopped之前被评估。f

无论如何,这个事件网络会导致不一致的状态,因为对f“当前”状态的假设有时是错误的。

我已经尝试解决这个问题一个多星期了,但我就是想不通。任何帮助深表感谢。

0 投票
1 回答
234 浏览

haskell - 为什么反应香蕉中没有从非事件中构建事件的函数?

我正在自学 FRP 和 Reactive-banana,同时编写我希望对跟随我的人更有用的教程。你可以在这里查看我的教程进度。

我一直在尝试使用事件来实现简单的哔哔声示例。我知道我需要做这样的事情:

在我的NetworkDescription,但我不知道如何让网络重复做同样的事情,或者做一次。理想情况下,我正在寻找这样的东西:

上面的Time类型只是我们最终使用的任何时间测量的替代品。我是否需要将系统时间作为行为来驱动“延迟”功能?这似乎比必要的复杂。

提前致谢,

回声诺兰

编辑:好的,repeatWithDelay 和 concatWithDelay 的类型没有意义。这就是我真正的意思。

0 投票
1 回答
334 浏览

haskell - 在 Traveler 游戏中实现计时器

这个问题是我从这里开始的问题的延续。我正在使用小行星示例作为工作模型。

我想在这里谈论的问题是计时器问题。小行星示例使用event0函数来制作一个,它依赖于Graphics.UI.WX库。我不想在这个项目中使用 WX。有人可以告诉我event0一般在做什么,以便我可以弄清楚我需要做什么来制作类似的功能?

0 投票
1 回答
389 浏览

f# - 具有副作用的 F# 可观察过滤器

我有许多事件被合并到一个执行某些命令的 observable 中。如果命令成功,则会产生一些结果。此外,应记录该命令。

就代码而言,这看起来像

该函数exec_action会导致一些副作用,例如编辑树视图。如果成功,则属性OutlineEdited设置为true

我希望用类似的东西来遵循这个

但事实证明Observable.filter每个订阅的观察者执行一次。这意味着副作用将重复出现。

您能否建议另一种方法来实现相同的结果而无需exec_action执行两次?如果可能的话,我希望避免使用可变变量。

0 投票
1 回答
171 浏览

haskell - 功能性 Banana Traveler - 输入处理

这是我的Traveler项目的一个子问题。

我已经将处理输入的粗略代码放在一起。它有效,直到我将 a 引入TChan混合中。下面是工作代码,以及如何使用它的示例。然后,我将对其进行更改并解释我这样做的原因。然后,我会谈谈这个问题。

执行以下操作ghci将证明这是有效的。

所以,现在我已经有了基本的机制,我想开始构建它。这将是一款多人游戏。就输入处理而言,解决此问题的第一步是从TChan. 想法是,所有玩家都将写入 this TChan,并且每个命令将按照到达的顺序进行处理。

所以我添加了一个新函数'inputFrame'

这是我尝试使用它的方式,在ghci.

output.txt不被写入。commandChan正在阅读,因为我检查它是否在填充后变为空。我做错了什么很明显吗?如果没有,我该如何解决问题?另外,出于我的预期目的,这是一个TChan正确的选择吗?