Я просто задавался вопросом, как можно написать пользовательскую функцию квадратного корня (sqrt) таким образом, чтобы она правильно взаимодействовала с F # unit system.Единичные квадратные корни
Что это должно быть как:
let sqrt (x : float<'u^2>) = let x' = x/1.0<'u^2> // Delete unit (x ** 0.5) * 1.0<'u> // Reassign unit
Но это отвергается из-за ненулевые константы не разрешено иметь общие единицы.
Есть ли способ написать эту функцию? С встроенным sqrt
он отлично работает, и какая магия он выполняет?
Связанный вопрос: (также ответил @kvb) http://stackoverflow.com/questions/1398611/f-ununit-reunit-inside-a-function – Benjol