1

通常の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モナドを使用する便利な可能性はありますか?状態を各イベントハンドラーに手動で渡すのはあまり便利ではありません。

4

2 に答える 2

0

私が読んだり書いたりしたwxHaskellプログラムは、状態を変数に押し込みました。
http://wxhaskell.sourceforge.net/doc/Graphics-UI-WX-Variable.html

ここに良い概要があります:http: //legacy.cs.uu.nl/daan/download/papers/wxhaskell.pdf

そして、実行ではなく開始を使用します。

于 2010-03-11T10:06:33.693 に答える
0

理論的には可能ですが、実際には面倒であることがわかりました。私自身のwxHaskellコードは通常、参照されているブログ記事で説明したように見えます。

http://wewantarock.wordpress.com/2010/01/11/custom-controls-in-wxhaskell-part-3/

私はブログで使用したより明示的なスタイルを好みますが、jaが提案したように、同じ目的でwxHaskell変数を使用できます。

于 2010-05-24T13:00:12.587 に答える