wxHaskellのイベントハンドラと、アプリケーションの状態の記憶
wxHaskellでは、ウィンドウでのイベントをIOモナドの関数で処理するための仕組みがあります。
例えば「ファイル→終了」のメニューアイテムに「close f」というウィンドウfを閉じる処理を割り当てるなら次のようなIOモナドによってイベントハンドラを設定します。(マウス移動やらなにやらも似たような感じ)
do file <- menuPane [text := "ファイル(&F)"] quit <- menuItem file [text := "終了(&Q)"] set quit [on command := close f]
このset関数の存在を見て明らかな感じがしますが、ウィンドウの状態はHaskellの変数として定義されているわけではないんですよね。外部にある領域に対してsetアクションで操作している、というほうがしっくりきます。
また、MVCとかで言うところのViewだけでなく、Modelについても、IORefなどを駆使してデータを渡していくことになるようです。
ここら辺の問題を解決してIOモナドが関わるレイヤーを減らして行きたいところです。