Ich frage mich, wie es möglich ist, eine benutzerdefinierte Quadratwurzelfunktion (sqrt) so zu schreiben, dass sie mit F # unit system richtig interagiert.Einheitssichere Quadratwurzeln
Was es sein sollte wie:
let sqrt (x : float<'u^2>) = let x' = x/1.0<'u^2> // Delete unit (x ** 0.5) * 1.0<'u> // Reassign unit
Aber dies aufgrund Nicht-Null-Konstanten nicht erlaubt ist nicht generische Einheiten haben dürfen.
Gibt es eine Möglichkeit, diese Funktion zu schreiben? Mit dem eingebauten sqrt
funktioniert es gut, also welche Magie führt es aus?
Verwandte Frage: (auch beantwortet von @ kvb) http://StackOverflow.com/Questions/1398611/F-Ununit-Reunit-inside-a-Funktion – Benjol