我是第一次使用三便士图形界面,我想做这样的事情:
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单子这样我就可以操作文本
我不熟悉three - penny-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
时钟的剩余部分在结束时为某些T
类型返回UI T
类型的值时,才能这样做。
因此,根据需要使用<-
来获得纯值。
UI
特有的:每个单子都遵循这个原则。您可以在网上找到大量的monad教程。