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.

questionAnswers(2)

yourAnswerToTheQuestion