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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top