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