Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 将文本字段和按钮单击转换为“UI”(事件字符串)`_Haskell_Frp_Threepenny Gui - Fatal编程技术网

Haskell 将文本字段和按钮单击转换为“UI”(事件字符串)`

Haskell 将文本字段和按钮单击转换为“UI”(事件字符串)`,haskell,frp,threepenny-gui,Haskell,Frp,Threepenny Gui,我想用三便士来学习玻璃钢 我希望生成包含用户输入的事件,并在每次单击按钮时触发。你可以在屏幕上看到代码 我试着用一个函数来实现 submitEvents :: Element -> Element -> UI (Event String) submitEvents button input = do val <- get value input return $ val <$ (UI.click button)

我想用三便士来学习玻璃钢

我希望生成包含用户输入的事件,并在每次单击按钮时触发。你可以在屏幕上看到代码

我试着用一个函数来实现

submitEvents :: Element -> Element -> UI (Event String)
submitEvents button input = do val <- get value input
                               return $ val <$ (UI.click button)
submitEvents::Element->Element->UI(事件字符串)

submitEvents button input=do val Event()->m(事件a)
,但我对frp比较陌生,可能错过了什么。

哦,我明白了。我正在从
UI.valueChange
构建我需要的东西

submitEvents :: Element -> Element -> UI (Event String)
submitEvents button input = do currVal <- stepper "" $ UI.valueChange input
                               return $ currVal <@ (UI.click button)
submitEvents::Element->Element->UI(事件字符串)

submitEvents button input=do currVal正如您已经注意到的,值
val
不会随时间变化,它是调用
get
时,即构建事件流时输入小部件的值。您还可以通过查看其类型来了解这一点:
val::String
,它不是可以随时间改变的。相反,
currName::Behavior String
,表示一个随时间变化的
String
。表面上的低效是一种误导,因为底层的JS实现无论如何都必须在每次按键时更新值,因此无法“只在按下按钮时查看”。
submitEvents :: Element -> Element -> UI (Event String)
submitEvents button input = do currVal <- stepper "" $ UI.valueChange input
                               return $ currVal <@ (UI.click button)