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