通常のwxHaskellプログラムは次のようになります
main = do
run gui
gui = do
....
....
guiはタイプを持っている必要がありIO a、runはタイプを持っている必要があります。IO a -> IO ()また、にはいくつかの初期化ルーチンがありますrun。
私は次のことをやろうとしています:
data AppGlobals = AG { ... some data ... }
type MApp a = StateT AppGlobals IO a
ただし、この場合、GUIのタイプは。でなければなりませんgui :: MApp AppGlobals。このタイプのため、通常のIOモナド構文を使用できなくなります。つまり、liftIOIOアクションを実行するたびに使用する必要があります。
wxHaskellでStateモナドを使用する便利な可能性はありますか?状態を各イベントハンドラーに手動で渡すのはあまり便利ではありません。