荷が重すぎでした…ものすごく時間がかかった。ざっと説明見て、モナドとかどうのこうのしたら sprite の位置座標とかの値を更新できそうだな、と思ったんですけど私にはうまくいかず、 try and error で IO モナドを外し外ししているうちに全部外れちゃって結局純関数型っぽい次のスプライトの座標/速度情報を毎フレームコピーするという実装になってしまいました。 D の 20倍のコンパイル速度で、 1/3 の性能。コンパイルしてるのに Ruby/SDL と性能変わらんし。さらには手抜きが色々あって止まっているスプライトがある有様。
HSDL (http://fxp.hp.infoseek.co.jp/haskell/HSDL/) 使用させてもらってます。さらにはテトリスのコードも参考にさせてもらってます。ていうか一部コピペ。
http://shinh.skr.jp/misc/dat_dir/Testsprite.hs
なんとか動いてるだけ、って感じ。もうちょっと勉強してまともに書き直したいところ。まあ私には当分無理でしょう。