问题标签 [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.
haskell - Reactive-Banana 中溢出函数的事件处理顺序是什么?
我对此进行了测试,似乎事件处理的顺序与源事件中列表的顺序相同。我不认为我可以依赖它,因为文档仅说明:
发出同时发生的事件。严格来说,我们有溢出。收集 = id
如何使用以下规范创建类似于溢出的函数:
发出连续的事件发生,并保证在第一个和最后一个之间不会触发其他事件
还是我应该尝试不同的方法?我正在尝试在 Reactive-Banana 中实现宏功能
haskell - Reactive-banana:来自 fromPoll 的最新值
我正在用反应香蕉在 Haskell 中写一个音乐播放器。我遇到的一个问题是使用 fromPoll 获取最新值。我想让用户在播放时有选择地选择曲目的一部分。我的代码看起来像这样:
上面,getPosition是一个偏函数,在真正开始播放之前返回Nothing 。问题是一旦addCmdEvent第一次触发,bPosition仍将保持Nothing值。eSetStart/End基于此计算它们的值。只有这样bPosition 才会更新,这是下次触发addCmdEvent时使用的值。依此类推,可以说,值将始终“减一”。
有一个相关的SO question,但在这种情况下,存在一个“触发”事件,可用于计算行为的新值。使用 fromPoll 可以实现类似的事情吗?
haskell - 反应性香蕉节流事件
我想在反应香蕉中实现某种类型的事件限制。它应该这样工作,如果从最后一个通过的事件到达的时间少于 delta 秒,则不会让事件通过。如果它没有通过,那么它会被存储并在最后一次触发事件的 delta 秒后触发。
下面是一个为时间戳数字列表实现此功能的程序。有没有可能把它翻译成 reactive-banana ?
另外,在反应香蕉中,我如何在其他事件出现后 x 秒触发一个事件?
haskell - 使用 ghc 7.0.4 在基于 redhat 的 linux 上安装响应式香蕉 wx 或 wx
嗨,我正在尝试安装,(无需更新或安装最新的编译器),reactive-banana-wx 并且其中一个要求失败
这是错误
当我尝试 cabal 安装 wxcore、wx 或 wxc 时,他们都说失败并指向需要 wxc。
这是错误
如果有用的话,这是我的编译器信息
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
就此而言)的事件中获取行为,也看不到如何将函数应用于没有行为的事件。总的来说,在泛型类型的情况下,我看不到如何为步进器提供初始值。
haskell - 具有状态更新的状态相关事件处理
我想为我的项目(一个GDB/MI前端)使用 FRP(即反应香蕉 0.6.0.0)。但是我在声明事件网络时遇到了麻烦。
有来自 GUI 的命令,有来自 GDB 的停止事件。两者都需要处理,处理它们取决于系统的状态。
我目前的方法看起来像这样(我认为这是显示问题所需的最低复杂性):
handleCommand
并handelStopped
根据当前状态对命令和停止事件做出反应。可能的反应是调用(同步)GDB I/O 函数和触发状态更新事件。例如:
问题是,当f
由 评估时accumE
,state'
有时与 不同state
。
我不是 100% 确定为什么会发生这种情况,因为我不完全理解时间和同时性的语义以及反应香蕉中“反应”的顺序。但我猜想,由触发的状态更新函数可能会在改变状态handleStopped
之前被评估。f
无论如何,这个事件网络会导致不一致的状态,因为对f
“当前”状态的假设有时是错误的。
我已经尝试解决这个问题一个多星期了,但我就是想不通。任何帮助深表感谢。
haskell - 为什么反应香蕉中没有从非事件中构建事件的函数?
我正在自学 FRP 和 Reactive-banana,同时编写我希望对跟随我的人更有用的教程。你可以在这里查看我的教程进度。
我一直在尝试使用事件来实现简单的哔哔声示例。我知道我需要做这样的事情:
在我的NetworkDescription
,但我不知道如何让网络重复做同样的事情,或者做一次。理想情况下,我正在寻找这样的东西:
上面的Time
类型只是我们最终使用的任何时间测量的替代品。我是否需要将系统时间作为行为来驱动“延迟”功能?这似乎比必要的复杂。
提前致谢,
回声诺兰
编辑:好的,repeatWithDelay 和 concatWithDelay 的类型没有意义。这就是我真正的意思。
f# - 具有副作用的 F# 可观察过滤器
我有许多事件被合并到一个执行某些命令的 observable 中。如果命令成功,则会产生一些结果。此外,应记录该命令。
就代码而言,这看起来像
该函数exec_action
会导致一些副作用,例如编辑树视图。如果成功,则属性OutlineEdited
设置为true
。
我希望用类似的东西来遵循这个
但事实证明Observable.filter为每个订阅的观察者执行一次。这意味着副作用将重复出现。
您能否建议另一种方法来实现相同的结果而无需exec_action
执行两次?如果可能的话,我希望避免使用可变变量。
haskell - 功能性 Banana Traveler - 输入处理
这是我的Traveler项目的一个子问题。
我已经将处理输入的粗略代码放在一起。它有效,直到我将 a 引入TChan
混合中。下面是工作代码,以及如何使用它的示例。然后,我将对其进行更改并解释我这样做的原因。然后,我会谈谈这个问题。
执行以下操作ghci
将证明这是有效的。
所以,现在我已经有了基本的机制,我想开始构建它。这将是一款多人游戏。就输入处理而言,解决此问题的第一步是从TChan
. 想法是,所有玩家都将写入 this TChan
,并且每个命令将按照到达的顺序进行处理。
所以我添加了一个新函数'inputFrame'
这是我尝试使用它的方式,在ghci
.
output.txt
不被写入。commandChan
正在阅读,因为我检查它是否在填充后变为空。我做错了什么很明显吗?如果没有,我该如何解决问题?另外,出于我的预期目的,这是一个TChan
正确的选择吗?