Это зависит от того, сколько они используются.Если вы используете расширение в каждом модуле вашего проекта, вы можете поместить его в свой файл cabal;например, если вы везде используете директивы препроцессора C, имеет смысл помещать CPP
в поле extensions
, а не перечислять его снова и снова, и если у вас много сложных объявлений экземпляров в ваших модулях, это можетразумно поставить туда также FlexibleInstances
.
Но «опасные» расширения (например, UndecidableInstances
) и расширения, используемые только в нескольких местах, должны идти вверху вашего файла: первыйдля документации (т. е. «здесь драконы»), последняя для документации и для сохранения эффектов расширений изолированными, чтобы вы случайно не использовали эффекты расширения, которые вы не собирались использовать в другом модуле.
В общем, я бы допустил ошибку при размещении их в верхней части файла, и только использование поля extensions
при повторном указании расширения становится раздражающим.