Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
The particularity of this compiler is that it is written mostly within the specification language of the Coq proof assistant, and its correctness — the fact that the generated assembly code is semantically equivalent to its source program — was entirely proved within the Coq proof assistant
К сожалению, в этом решении все константы должны быть известны на этапе компиляции, что сужает область применения.Именно так и задумано.
*RangeValidation> ab 4 + 0
*** Exception: out of range [1 .. 20], value 0 in fromInteger
*RangeValidation> ab 4 +. (0::Int)
4
*RangeValidation>
Арифметика с контролем диапазонов в Haskell с помощью Type-Level Literals