Нужно ли вообще определить DU, чьи предложения используют общую единицу измерения? например.
type MyDU =
| A of int<_>
| B of float<_>
этот код не компилируется, но я могу указать регулярную функцию, которая принимает числовое значение с общей единицей измерения:
let f (n : int<_>) = n * n;;
val f : int<'u> -> int<'u ^ 2>
учитывая, что каждое предложение union в конечном счете является функцией, которая преобразует тип, указанный после of
, в частные типы MyDU.A
или MyDU.B
, есть ли конкретная причина, почему он работает над определением функции, но не определяет определение?
Есть ли способ сделать то, что я хочу здесь сделать? Если нет, я хотел бы знать, почему это тоже не сработает!
Спасибо,