This question is closely related to these ones (1, 2, 3)
I'm using an external library which doens't (yet) handle units of measure. I want to be able to 'ununit' values before I pass them in, then 'reunit' them when I get the results back.
The catch is that I'd like to avoid being forced to declare WHICH units in advance.
Example snippet
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
I haven't managed to work out how to handle this one...
Update If I have understood correctly, the final version of F# will include functions to do this.