昨日の続き

眠いけどこれだけは書き残しておかねば。
昨日のこの問題: ... is a rigid type variable bound by ...
この記事でOCamlのモジュールシステムを使ってるみたいな方法で解決するのが正しいような気がした。第 6回 OCamlの「モジュール・システム」 - 数理科学的バグ撲滅方法論のすすめ:ITpro
A Gentle Introduction to Haskell: ModulesにもモジュールはHaskellでADTを作る例がある。
T3GameとT3Playを結びつける方法がわからなかったので別個にnewtypeしてて、Play a =>では広すぎる問題が発生したわけだが、T3モジュールのGameとPlayって型にすればいいんじゃないかな。これが「同じニーズが別の方法で解決出来る」の答えだったんだ。たぶん。眠いので実装は明日の夜。