[Haskell] How to use STM in GUI applications?

Thorsten Seitz thorsten.seitz at web.de
Mon Dec 4 17:03:56 EST 2006


I'm very intrigued by the concepts of STM but I'm having difficulties to see 
how a TVar based model can be used by a GUI application (e.g. Gtk2hs):

For example, I'd like to update the GUI (e.g. changing widget sensitivity) 
upon changes in the model. 
But changing the sensitivity of a widget is an IO operation which cannot be 
initiated atomically by a model change which is an STM operation. Therefore 
the GUI change cannot be executed atomically together with the model change.
This means for example that I can still press a button although the model has 
changed such that the button action is not allowed anymore. All I can do is 
check the condition of the model when the button is pressed and then ignore 
the button press which is not very satisfying for the user.

Is it simply not appropriate to use TVar based models in a GUI application? 
Maybe STM should be more used like a service for MVar based GUI models?

Thanks for any help!


More information about the Haskell mailing list