Главные числа на уровне типа в Ocaml

Может ли кто-нибудь дать мне предложения / рекомендации по созданию целых чисел уровня в 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). Мне нужно сделать это таким образом, чтобы избежать динамического привязки (при использовании объектов) и включить компилятор для оценки и проверки всех таких выражений статически.

Мое нынешнее понимание в том, что я должен сделать гадт, который реализует операции в качестве конструкторов типа, но все же я борюсь с идеей, и любой подсказку будет очень оценен.

7
задан etaoin 30 August 2011 в 13:18
поделиться