Konwersja z m / s na km / h za pomocą F # jednostek miary
Jestem w trakcie nauki F # - i obecnie zajmuję się Jednostkami miary. Mam prostą kalkulację zwracającą metry na sekundę i chcę wprowadzić funkcję przekształcającą ją na kilometry na godzinę.
Mój kod wygląda tak:
[<Measure>] type kg
[<Measure>] type s
[<Measure>] type m
[<Measure>] type km
[<Measure>] type h
let msToKmph(speed : float<m/s>) =
(float speed) * 3.6<km/h>
let gravityOnEarth = 9.81<m/s^2>
let heightOfJump = 3.5<m>
let speedOfImpact = sqrt (2.0 * gravityOnEarth * heightOfJump)
let speedOfImpactKmh = msToKmph(speedOfImpact)
To działa - otrzymuję 8.28673639 m / s i 29.832251 km / h. Nie jestem pewien, czy jest to najlepszy sposób wyrażenia relacji między różnymi jednostkami. Czy można to zrobić bardziej elegancko?
Na przykład, wykonując linię (prędkość pływaka), aby usunąć informacje o jednostce z parametru prędkości, aby msToKmph powrócił km / h. Gdybym nie usunął informacji o jednostce przed wykonaniem obliczeń, zwrócona jednostka wynosiłaby: km m / (h s)