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