使用ThreepennyGUI删除UI单子



我是第一次使用三便士图形界面,我想做这样的事情:

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教程。

最新更新