F # Ununit - ponowne połączenie wewnątrz funkcji
To pytanie jest ściśle powiązane z tymi (1, 2, 3)
Używam zewnętrznej biblioteki, która nie obsługuje (jeszcze) obsługi jednostek miary. Chcę być w stanie „ununitować” wartości, zanim je przekażę, a następnie „ponownie połączyć” je, gdy otrzymam wyniki.
Chwytem jest to, że chciałbym uniknąć zmuszania do zadeklarowania JEJ jednostek z wyprzedzeniem.
Przykładowy urywek
let ExternalNonUnitAwareFunction s = s + 1.
let MyUnitAwareClient (s:float<'u>) = //'
//1. this option "flattens" to no unit, or fixes to first inferred unit
//let (unit:float<'u>) = 1.0<_>
//2. this works fine, except for 0!
let unit = s / (float s)
s |> float |> ExternalNonUnitAwareFunction |> (*) unit
Nie udało mi się ustalić, jak sobie z tym poradzić ...
Aktualizacja Jeżeli mampoprawnie zrozumiany, ostateczna wersja F # będzie zawierała funkcje do tego.