2010-03-11 72 views
1

通常wxHaskell程序看起來像StateT和WX GUI共存

main = do 
     run gui 

gui = do 
    .... 
    .... 

GUI必須IO a類型,運行的類型爲IO a -> IO(),也存在一些run初始化程序。

我特林做到以下幾點:

data AppGlobals = AG { ... some data ... } 
type MApp a = StateT AppGlobals IO a 

但在這種情況下,GUI必須有類型gui :: MApp AppGlobals。由於它的類型,不可能使用通常的IO monad語法,我的意思是我每次執行IO操作時都要使用liftIO

有沒有在wxHaskell中使用State monad的方便的可能性?將狀態手動傳遞給每個事件處理程序並不是很方便。

回答