Я пишу игру со змеями на Хаскеле.Вот некоторые из вещей, которые у меня есть:
- A
Coord
тип данных - A
Line
тип данных - A
Rect
тип данных - Класс
Polygon
класса, который позволяет мне получить Rect
в виде серии строк ([Line]
). - Класс
Impassable
типа, который позволяет мне получить Line
как серия координат ([Coord]
), чтобы я мог обнаруживать столкновения между другими Impassable
s. - A
Draw
классом для всего, что я хочу нарисовать на экране (HSCurses). - Наконец, я использую QuickCheck, поэтому я хочу объявить
Arbitrary
экземпляры для многих из этих вещей.
В настоящее время у меня их много в отдельных модулях, поэтому яесть много маленьких модулей.Я заметил, что мне нужно импортировать многие из них друг для друга, поэтому мне интересно, в чем дело.
Я особенно запутался в Arbitrary
экземплярах.При использовании -Wall
я получаю предупреждения об осиротевших экземплярах, когда я, но эти экземпляры вместе в одном тестовом файле, я понимаю, что могу избежать этого предупреждения, поместив эти экземпляры в тот же модуль, в котором определен тип данных, но затем яВам понадобится import Test.QuickCheck
для всех тех модулей, которые кажутся глупыми, потому что QuickCheck требуется только при создании исполняемого файла теста.
Буду признателен за любые советы по конкретной проблеме с QuickCheck, а также по более общей проблеме.как / где программы должны быть разделены на модули.