Sto usando wxHaskell per creare una semplice interfaccia grafica con componenti tipici come pulsanti, pannelli, ecc.
Quando alcuni di questi componenti eseguono un'azione (come il callback), lo stato generico dell'applicazione può cambiare.
Per mantenere lo stato, sto usando IORef
come una sorta di puntatore a una struttura dati generica con tutte le proprietà dello stato self.
Ad ogni modo usare IORef
come una sorta di stato mutabile di primo livello non è generalmente considerato una buona soluzione basata sul link . Potrebbe essere meglio stato / stato monad.
wxHaskell è un "collegamento" a una libreria orientata agli oggetti (wxWidgets) e l'uso di una monade di stato è difficile a meno che non sia "agganciato" al thread del ciclo di eventi principale.
Qual è il modo migliore per gestire uno stato generico della GUI con Haskell in un modo di programmazione funzionale?