Me preguntaba cómo es posible escribir una función de raíz cuadrada definida por el usuario (raíz cuadrada) de una manera que interactúa adecuadamente con F # 's unit system.raíces cuadradas Unidad de fallos
Lo que debería ser como:
let sqrt (x : float<'u^2>) = let x' = x/1.0<'u^2> // Delete unit (x ** 0.5) * 1.0<'u> // Reassign unit
Pero esto es rechazado debido a constantes distintas de cero no está permitido tener unidades genéricas.
¿Hay una manera de escribir esta función? Con el built-in sqrt
funciona bien, entonces ¿qué magia hace?
Pregunta relacionada: (también respondida por @kvb) http://stackoverflow.com/questions/1398611/f-ununit-reunit-inside-a-function – Benjol