Zastanawiałem się, w jaki sposób można zapisać zdefiniowaną przez użytkownika funkcję pierwiastkowania kwadratowego (sqrt) w sposób, który współdziała on poprawnie z F # 's unit system.Bezpieczne jednostki o kwadratowych korzeniach
Co powinno być tak:
let sqrt (x : float<'u^2>) = let x' = x/1.0<'u^2> // Delete unit (x ** 0.5) * 1.0<'u> // Reassign unit
Ale to jest niedozwolone ze względu na niezerowe stałe nie pozwolono mieć jednostki rodzajowe.
Czy istnieje sposób napisania tej funkcji? Z wbudowanym sqrt
działa dobrze, więc jaka magia to działa?
Powiązane pytanie: (również odpowiedział @kvb) http://stackoverflow.com/questions/1398611/f-ununit-reunit-inside-a-function – Benjol