Mantener unidades de medida en conversaciones de tipo

Si definimos una unidad de medida como:

[<Measure>] type s

y luego un número entero con una medida

let t = 1<s>

y luego convertirlo en un flotador

let r = float t

vemos esor = 1.0 sin un tipo de medida. Esto parece muy extraño, ya que se ha perdido toda la información de la medida.

Puedes usarLanguagePrimitives.FloatWithMeasure para volver a convertir en un flotador con algo como

let inline floatMeasure (arg:int<'t>) : (float<'t>) =
    LanguagePrimitives.FloatWithMeasure (float arg)

que aplica los tipos correctos, pero esta no parece la solución correcta, ya que los documentos para unidades de medida (http://msdn.microsoft.com/en-us/library/dd233243.aspx) dicen

Sin embargo, para escribir capas de interoperabilidad, también hay algunas funciones explícitas que puede usar para convertir valores sin unidades en valores con unidades. Estos se encuentran en el módulo Microsoft.FSharp.Core.LanguagePrimitives. Por ejemplo, para convertir de un flotador sin unidad a un flotador, use FloatWithMeasure, como se muestra en el siguiente código.

Lo que parece sugerir que la función debe evitarse en el código F #.

¿Hay alguna forma más idiomática de hacer esto?

Respuestas a la pregunta(4)

Su respuesta a la pregunta