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