使用 ThreepennyGUI 删除 UI monad
Remove UI monad with ThreepennyGUI
我是 threepenny gui 的新手,我想做这样的事情:
on UI.click button $ const $ do
element reverseArea # set UI.text (reverse (get value area))
因此,当我单击页面上的某个按钮时,我从文本区域获取文本,将其反转并显示在不同的文本区域中。
但是,当我尝试 运行 时,出现错误:
Couldn't match expected type ‘[Char]’ with actual type ‘UI String’
所以我想知道如何删除 UI monad 以便我可以操作文本
我不熟悉三便士-ui,但我想你需要这样的东西:
on UI.click button $ const $ do
s <- get value area
element reverseArea # set UI.text (reverse s)
粗略的想法是:当你有一个 UI String
类型的值时,你可以在 do
中使用 x <- value
来获取字符串(没有 UI
)并且将其绑定到变量 x
。如果 do
时钟的其余部分在末尾 returns 类型的值 UI T
对于某种类型 T
.
,则只能执行此操作
因此,根据需要使用 <-
以获得纯值。
顺便说一下,这不是 UI
特有的:每个 monad 都遵循这个原则。您会在网上找到大量 monad 教程。
我是 threepenny gui 的新手,我想做这样的事情:
on UI.click button $ const $ do
element reverseArea # set UI.text (reverse (get value area))
因此,当我单击页面上的某个按钮时,我从文本区域获取文本,将其反转并显示在不同的文本区域中。 但是,当我尝试 运行 时,出现错误:
Couldn't match expected type ‘[Char]’ with actual type ‘UI String’
所以我想知道如何删除 UI monad 以便我可以操作文本
我不熟悉三便士-ui,但我想你需要这样的东西:
on UI.click button $ const $ do
s <- get value area
element reverseArea # set UI.text (reverse s)
粗略的想法是:当你有一个 UI String
类型的值时,你可以在 do
中使用 x <- value
来获取字符串(没有 UI
)并且将其绑定到变量 x
。如果 do
时钟的其余部分在末尾 returns 类型的值 UI T
对于某种类型 T
.
因此,根据需要使用 <-
以获得纯值。
顺便说一下,这不是 UI
特有的:每个 monad 都遵循这个原则。您会在网上找到大量 monad 教程。