Tenter d'apprendre à écrire des applications avec Gtk2Hs Je rencontre des difficultés pour combler le fossé entre Gtk2HS piloté par les événements et l'état persistant de mon modèle. Donc, pour simplifier, disons que j'ai cette application simpleComment gérer l'état de l'application dans Gtk2Hs
module Main where
import Graphics.UI.Gtk
import Control.Monad.State
main = do
initGUI
window <- windowNew
button <- buttonNew
set button [buttonLabel := "Press me"]
containerAdd window button
-- Events
onDestroy window mainQuit
onClicked button (putStrLn ---PUT MEANINGFUL CODE HERE---)
widgetShowAll window
mainGUI
et l'état de ma demande est combien de fois le bouton a été pressé. En voyant d'autres posts comme this ils s'appuient sur MVars ou IORefs qui ne me semblent pas satisfaisants, car dans le futur peut-être je voudrai refactoriser le code afin que l'état vive sur son propre contexte.
Je pense que la solution devrait utiliser la monade d'État en utilisant une fonction étape comme:
State $ \s -> ((),s+1)
mais je ne suis pas sûr des conséquences, comment faire dans le code ci-dessus ou même si ce monade est la bonne solution à mon problème.
Merci beaucoup, ce fut vraiment une révélation! – fotNelton