programme habituel wxHaskell ressembleStateT et WX IUG coexistance
main = do
run gui
gui = do
....
....
IUG doit être de type IO a
, exécutez est de type IO a -> IO()
, il y a aussi des routines d'initialisation dans run
.
Je suis Tring faire ce qui suit:
data AppGlobals = AG { ... some data ... }
type MApp a = StateT AppGlobals IO a
Mais dans ce cas IUG doit avoir un type gui :: MApp AppGlobals
. En raison de son type, il devient impossible d'utiliser la syntaxe IO monad habituelle, je veux dire que je dois utiliser liftIO
chaque fois que j'effectue une action IO.
Existe-t-il une possibilité pratique d'utiliser la monade d'état dans wxHaskell? Il n'est pas très pratique de passer l'état à chaque gestionnaire d'événement manuellement.
Il existe deux interfaces légèrement différentes dans WX et WXCore. Dans WXCore utilisé 'run', tandis que dans WX utilisé' start'. Ils ont le même type. –