こんなとこでしょうか? 1がおおよそ出来れば、2と3は同時並行できると思います。
type color = RED | BLUE | GREEN | YELLOW | SEE_THROUGH type kind = NORMAL | JAMA type puyo = { color : color; kind : kind }
こんな感じで。あとは空間とぷよの配置の定義すればおしまい。 配置から消えるぷよを求める関数とか作っとくと便利かな。
追記よろしく
type space = puyo list list let react (p:ps) = ...
react : space -> option (int, space) を想定.intは点数.かなりでかい関数になると思われる. (純粋関数的すぎる?) あと画面のエフェクトを考えると,消えたぷよの位置のリストを返すようにすれば,消えたときのエフェクトも描きやすいだろうと思う.
ところでどうやって再帰で書くんだろう.