Рассмотрим следующий код F#:
[<Measure>] type pixel
[<Measure>] type inch
[<Measure>] type dot
[<Measure>] type percentage
let scaleCalculation (finalSize:float<pixel>) (originalSize:float<pixel>) =
finalSize/originalSize * 100.0<percentage>
(Я понимаю, что мне нужно проверить originalSize на 0, но на самом деле это не относится к этому вопросу).
Я хотел бы перегрузить эту функцию для обработки дюймов и точек на дюйм. Я не думаю, что есть какой-либо способ перегрузить единицу измерения, но я просто подумал, что посмотрю, есть ли у кого-нибудь какие-либо предложения по этому поводу.
Я знаю, что могу сделать это:
let scaleCalculation (finalSize:float) (originalSize:float) =
finalSize/originalSize * 100.0<percentage>
но тогда я теряю проверку меры finalSize и originalSize. Я просто хочу убедиться, что мера finalSize и originalSize одинакова.
Есть предложения, мысли?