问题标签 [sodiumfrp]

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

reactive-programming - ReactFX 与钠的比较

关于的书是对 FRP 的良好而清晰的介绍。

我希望 - 因为关于 Sodium 的书很容易理解 - 通过比较两个库(Sodium 和 ReactFX),人们可以利用他们从书中学到的知识并使用这些知识在 ReactFX 中实现 GUI。

这是发布此问题的动机。

因此,我提出了 11 个有助于实现这一目标的问题:

ReactFX 中与以下 11 个 Sodium 概念对应的概念是什么?

1 细胞/行为

2 流/事件

3 过滤器

4 合并

5 合并

6 开关

7 从不

8 保持

9 快照

10 地图

11 电梯

编辑:

12 CellLoop/快照保持循环

0 投票
1 回答
86 浏览

haskell - 递归更新钠中的“行为”会产生“线程阻塞......”

我会根据当前值更新行为(Cell / Val)。

但以下代码会在 MVar 操作异常中引发无限期阻塞的线程。

我预计它会打印三倍的“我的价值:”。我错过了什么?- 谢谢。


  • GHCi,版本 7.8.3
  • 钠-0.11.0.3
0 投票
0 回答
154 浏览

haskell - ghcjs + 钠:一段时间后没有事件

更新: ghcjs 中有一个问题:https ://github.com/ghcjs/ghcjs/issues/296


我玩 ghcjs 和钠,但 3 秒后我的应用程序不再发出事件。

一个最小的例子:

  • 一个按钮:发出事件
  • 计数器行为:计算按钮点击次数
  • 一个 div:显示计数器行为
  • 3 秒后,div 不再更新
  • 如果我重新加载页面,计数器会再次更新 - 3 秒


完整示例位于https://github.com/j-keck/ghcjs-sodium

谢谢

0 投票
1 回答
63 浏览

haskell - 如何在 Leksah 的 do 块中获取术语的类型?

视频格式问题:http: //youtu.be/3_pvK-gcLMM

文本格式的问题:我怎样才能让 Leksah 告诉我unlisten下面代码中的类型?

代码取自https://github.com/SodiumFRP/sodium/blob/master/haskell/examples/tests/unit-tests.hs

如果 Leksah 无法做到这一点(在 do 块中获取一种术语),那么如何提取该信息?是否有其他 Haskell 工具或 IDE 可以做到这一点?

编辑:似乎 haskell-vim-now 可以做到:

在此处输入图像描述

以某种方式在Leksah拥有同样的东西会很好。

0 投票
3 回答
155 浏览

haskell - 从外部网络采样行为

由于作者已弃用钠,因此我正在尝试将我的代码移植到反应香蕉。但是,两者之间似乎存在一些我很难克服的不一致之处。

例如,在钠中很容易检索行为的当前值:

我看不到如何在反应香蕉中做到这一点

(我想要这个的原因是因为我试图将行为导出为 dbus 属性。可以从其他 dbus 客户端查询属性)

编辑:替换了“民意调查”这个词,因为它具有误导性

0 投票
1 回答
107 浏览

functional-programming - Blackheath 的《函数式反应式编程》一书,2.6.3 节说明

部分讨论了FRP 流处理中的合并操作(使用了Sodium 库)。Book 展示了下图流组合,并说当事件通过流进入 FRP 逻辑时,它会导致在事务上下文中发生的级联状态更改,因此所有更改都是原子的。

事件流 - sDeselectsSelect(参见 2 个事件:“+”和“-”)源自 UI 控件,因为它们发生在同一个 FRP 事务中,因此它们携带的事件被认为是同时发生的。然后书上说

合并实现必须事件存储在临时存储中 ,直到它知道它不会再收到任何输入。然后它输出一个事件:如果它接收到多个事件,它使用提供的函数来组合它们;否则,它会输出它收到的一个事件。

问题:什么时候是“不再有输入”的时候?合并函数如何知道这一刻?它只是从给定图表上的第二个传入流中获取值的时间还是我错过了smth?你能用一个更好的流例子来说明它吗?