Haskell でスネーク ゲームを書いています。これらは私が持っているもののいくつかです:
Coordデータ型Lineデータ型Rectデータ型- 一連の行 ( ) として
Polygon取得できる型クラス。Rect[Line] - を一連の Coords ( ) として取得
Impassableできる型クラスで、他の 間の衝突を検出できます。Line[Coord]Impassable Draw画面に描画したいものの型クラス (HSCurses)。Arbitrary最後に、QuickCheck を使用しているので、これらの多くのインスタンスを宣言したいと考えています。
現在、私はこれらを別々のモジュールにたくさん持っているので、小さなモジュールがたくさんあります。お互いにたくさんインポートしなければならないことに気づいたので、何がポイントだったのだろうと思っています。
私は特にArbitraryインスタンスについて混乱しています。使用する-Wallと、孤立したインスタンスについて警告が表示されますが、それらのインスタンスを 1 つのテスト ファイルにまとめると、データ型が定義されている場所と同じモジュールにそれらのインスタンスを配置することでその警告を回避できると理解していますが、その後はimport Test.QuickCheckQuickCheck はテスト実行可能ファイルをビルドするときにのみ必要なはずなので、ばかげているように見えるすべてのモジュールに対して。
プログラムをモジュールに分割する方法/場所のより一般的な問題に関するガイダンスと同様に、QuickCheck に関する特定の問題に関するアドバイスをいただければ幸いです。