Stato e WX gui convivenza
-
19-09-2019 - |
Domanda
consueto programma wxHaskell assomiglia
main = do
run gui
gui = do
....
....
gui deve avere tipo IO a
, familiare dispone di digitare IO a -> IO ()
, c'è anche alcune routine di inizializzazione in run
.
Sono Tring di fare seguente:
data AppGlobals = AG { ... some data ... }
type MApp a = StateT AppGlobals IO a
Ma in questo caso gui deve avere tipo gui :: MApp AppGlobals
. A causa di esso è di tipo diventa impossibile utilizzare solita sintassi IO monade, intendo Ihave utilizzare liftIO
ogni volta che l'esecuzione di un'azione IO.
C'è la possibilità di utilizzare convinient monade Stato wxHaskell? Non è molto comoda per passare lo stato di ciascun gestore di eventi manualmente.
Soluzione
I programmi wxHaskell che ho letto e scritto solo spingono lo stato in variabili.
http://wxhaskell.sourceforge.net/doc/Graphics-UI- WX-Variable.html
Ecco una buona visione: http://legacy.cs.uu.nl/daan/download/ carte / wxhaskell.pdf
E usano iniziare piuttosto che correre.
Altri suggerimenti
E 'possibile in teoria, ma ho trovato ad essere ingombrante, in pratica, come avete fatto. Il mio proprio codice wxHaskell solito sembra qualcosa di simile che ho descritto in questo articolo del blog di riferimento:
http: // wewantarock. wordpress.com/2010/01/11/custom-controls-in-wxhaskell-part-3/
È possibile utilizzare variabili wxHaskell, come suggerito ja, per lo stesso scopo, anche se io preferisco lo stile più esplicito che ho usato nel blog.