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