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