Хабр Курсы для всех
РЕКЛАМА
Большая витрина: от крупнейших школ до частных авторов. Сравнивайте по цене, длительности, формату и выбирайте самый подходящий курс!
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