videos vaso trucos truco revelado para objetos magos magia los levitar levantar hacer hacen hace flotando desaparecer cosas con como botella agua f# units-of-measurement

vaso - F#Unidades de medida-valores de ''elevación'' para flotar<algo>



trucos de magia para levantar cosas (2)

¿Hay alguna razón por la que tienes que mapear dos veces? ¿Qué pasa con esto?

data |> List.map (fun x -> (float x) * 1.0<m>)

Al importar números desde un archivo csv, necesito convertirlos en flotantes con la unidad.

Actualmente hago esto con una función en línea:

data |> List.map float |> List.map (fun n -> n * 1.0<m>)

Pero me pregunto si existe una manera más elegante de hacerlo, ¿o tengo que crear mi propio módulo de "unidades" con funciones de conversión?

Lo que sería realmente bueno sería algo como esto, pero dudo que sea posible ...

data |> List.map float |> List.map lift<m>

Esto es lo opuesto a mi pregunta anterior ( Cómo eliminar genéricamente F # Unidades de medida ).

ACTUALIZACIÓN: para unidades caseras, lo he intentado, que funciona bien:

[<Measure>] type km = static member lift (v:float) = v * 1.0<km> data |> List.map float |> List.map km.lift

o, siguiendo la pregunta en esta respuesta

data |> List.map (float >> km.lift)


Parece que las unidades de medida no pueden ser parámetros de tipo por el momento (no se sabe si esto cambiará). Entonces la forma más corta de escribir esto es:

data |> List.map float |> List.map ((*) 1.0<m>)

EDITAR

Ver también ahora FloatWithMeasure aquí

http://msdn.microsoft.com/en-us/library/ee806527(VS.100).aspx