Утверждения времени компиляции с GHC Haskell?

Исходя из C ++, я привык создавать простые формы утверждений времени компиляции, где я мог бы выдавать предупреждения или ошибки во время компиляции, если некоторые простые условия (например, простые алгебраические выражения) не были выполнены с помощью метапрограммирования шаблонов и / или cpp (1)

Например,если бы я хотел убедиться, что моя программа компилируется только тогда, когда Int имеет хотя бы определенный диапазон minBound / maxBound или, альтернативно, если без потерь (как в обратимое) преобразование из Int64 в Int возможно с текущей целью компиляции. Возможно ли это с помощью какого-либо расширения GHC Haskell? Моей первой догадкой было использование TH. Существуют ли другие средства GHC, которые можно использовать с этой целью?

12
задан hvr 11 July 2011 в 10:26
поделиться