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

标签 haskell reactive-programming reactive-banana

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

最佳答案

基本上,您希望使用函数而不是数据。如果您正在考虑“我如何创建一个在框中包含当前文本的行为”,那么您不会。相反,您编写将当前文本作为参数的函数,并在必要时将其传入。假设您想在按下按钮时打印文本框的内容。然后你会做这样的事情:

eButton :: NetworkDescription (Event ())
eButton = event0 button command

network = do
  pressButton <- eButton
  reactimate $ (\() -> get text foo >>= print) <$> pressButton

如果您需要输入行为,您可以类似地使用类型为 Behavior (String -> a) 的函数(或您需要的任何类型),然后只需在 reactimate 处传入字符串称呼。

关于haskell - 使用 reactive-banana-wx 的 UI 输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6544599/

相关文章:

swift - 如何在定时器中设置到期时间(_ :period:scheduler:)

javascript - 如何确定 Observable.merge 中哪些 observable 发生了更改?

haskell - 选择哪种 FRP 包?

haskell - 使用响应式(Reactive)香蕉在 Haskell 中进行音频合成

haskell - NoMonomorphismRestriction 有助于保持共享?

haskell - Haskell 中的不可变变量是什么意思?

c++ - 可以在 Haskell 中模拟 'correspond' 类型的 C++ 结构模式(模板特化)吗?

Haskell - 使用自定义预处理器打包 cabal 包

java - RxJava : retrying map actions

haskell - Haskell 的reactive-banana 中的reactive-web 的flatMap 相当于什么?