Haskell 在客户机/服务器编程中使用三便士gui/reactive
我试图找出如何使用Haskell及其功能来编写一个程序,让 用户从列表框中选择一个项目 将所选内容发送到外部服务器 从服务器获取结果列表 用结果填充列表框 重复 似乎我需要使用Handler、newEvent和register来完成上述操作。如果有人能给我指出一些现有的代码,这些代码可以做类似上面的事情,那就太好了 我在threepenny gui samples目录中找到的最接近的是GameThing.hs,但它不使用register 更新: 我想问的是,我是否应该使用Handler、newEvent和register,如果是的话,还应该使用这些函数的一些说明或示例 此外,需要明确的是,大局是:Haskell 在客户机/服务器编程中使用三便士gui/reactive,haskell,threepenny-gui,Haskell,Threepenny Gui,我试图找出如何使用Haskell及其功能来编写一个程序,让 用户从列表框中选择一个项目 将所选内容发送到外部服务器 从服务器获取结果列表 用结果填充列表框 重复 似乎我需要使用Handler、newEvent和register来完成上述操作。如果有人能给我指出一些现有的代码,这些代码可以做类似上面的事情,那就太好了 我在threepenny gui samples目录中找到的最接近的是GameThing.hs,但它不使用register 更新: 我想问的是,我是否应该使用Handler、newE
browser --> threepenny-gui (on localhost) --> backend server (anywhere on network)
<-- <--
换句话说,我需要根据用户选择执行一些IO,然后显示该IO的结果
更新:以下是我根据@Taldykin的回复提出的解决方案:
这是一段代码。稍后我将添加描述
{-# LANGUAGE LambdaCase #-}
import Graphics.UI.Threepenny as UI
main :: IO ()
main = do
(evFillList, doFillList) <- newEvent
initialList <- valuesSupply ""
behFillList <- stepper initialList evFillList
startGUI defaultConfig $ \win -> do
list <- ul
sel <- listBox
behFillList
(pure Nothing)
(pure $ \it -> UI.span # set text it)
getBody win #+ [grid [[element list, element sel]]]
setFocus $ getElement sel
on selectionChange (getElement sel) $ \case
Nothing -> return ()
Just ix -> do
items <- currentValue behFillList
let it = items !! ix
liftIO $ valuesSupply it >>= doFillList
element list #+ [li # set html it]
setFocus $ getElement sel
valuesSupply :: String -> IO [String]
valuesSupply x = return [x ++ show i | i <- [0..9]]
你试过了吗?要求堆栈溢出为您设计应用程序是徒劳的;在要求我们处理大局之前,你为什么不试着把问题分解成更小的部分并实施它们呢?我们很乐意为您提供更多有针对性的问题,但这太宽泛了。我已经尝试过了,我不是在要求应用程序设计。看我的更新。太好了。这正是我需要的。谢谢我终于抽出时间写了一篇关于这个的小博客。谢谢你的帮助。