Может ли кто-нибудь дать мне предложения / рекомендации по созданию целых чисел уровня в Ocaml (3.12), поддерживающих дополнение и вычитание на них?
Например, если я Есть ли количество представленных так:
type zero
type 'a succ
type pos1 = zero succ
type pos2 = zero succ succ
...
Мне нужен способ определить функцию на таких типах, как это:
val add: pos2 -> pos1 -> pos3
Маленький фон: Я пытаюсь портировать некоторый код Haskell для операций по физическим размерам, и мне нужна возможность определить операции на типов измерений (запись из 7 типов уровня INT, представляющих показатели из 7 базовых единиц Si). Мне нужно сделать это таким образом, чтобы избежать динамического привязки (при использовании объектов) и включить компилятор для оценки и проверки всех таких выражений статически.
Мое нынешнее понимание в том, что я должен сделать гадт, который реализует операции в качестве конструкторов типа, но все же я борюсь с идеей, и любой подсказку будет очень оценен.