Насколько маленькими я должен делать модули на Haskell?

Я пишу змейку на Haskell. Вот некоторые из вещей, которые у меня есть:

  • A Coord тип данных
  • A Line тип данных
  • A Rect тип данных
  • A класс типа Polygon , который позволяет мне получить Rect в виде серии строк ( [Линия] ).
  • Класс типа Непроходимый , который позволяет мне получить линию в виде серии координат ( [Coord] ), чтобы я мог обнаруживать коллизии между другими Непроходимыми .
  • Класс типа Draw для всего, что я хочу нарисовать на экране (HSCurses).
  • Наконец, я использую QuickCheck, поэтому я хочу объявить Произвольные экземпляры для многих из этих вещей.

В настоящее время у меня много из них в s Отдельные модули, поэтому у меня много маленьких модулей. Я заметил, что мне нужно импортировать много из них друг для друга, поэтому мне интересно, в чем был смысл.

Меня особенно смущают Произвольные экземпляры.При использовании -Wall я получаю предупреждения об осиротевших экземплярах, когда я складываю эти экземпляры вместе в один тестовый файл, я понимаю, что могу избежать этого предупреждения, поместив эти экземпляры в тот же модуль, что и тип данных определено, но тогда мне нужно будет импортировать Test.QuickCheck для всех этих модулей, что кажется глупым, поскольку QuickCheck требуется только при сборке исполняемого файла теста.

Любые советы по конкретной проблеме с QuickCheck будут оценены, как и руководство по более общей проблеме, как / где программы должны быть разделены на модули.

6
задан Ollie Saunders 23 October 2010 в 00:32
поделиться