椿の日記

たぶんプログラムの話をします

wxHaskellのカスタムコントロールの作り方

Viewのコードを再利用したくなって、こりゃカスタムコントロールを作らなきゃならんなぁ…と思ったものの、wxHaskellでのカスタムコントロールの作り方がわからんちん。特に、カスタム属性の保存とか取得って一体どうやってやるの? と思ってたのですがこんな記事がありました。

ここによると、状態の記憶にはグローバル定義域にハッシュテーブルを作成し、ウィンドウのIDをキーとして状態を登録するようです。

このときunsafePerformIOを利用しているみたいですね。実行順序は保障されるのかどうか気になりはしたのですが、IOモナドのdo構文の中でHash.lookupを利用するから実行順序は確実に保てるのかな?この辺のHaskellの処理系に関わってきそうな部分の仕組みが良くわからないので勉強しないとなあ…。