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