F#单位度量 - 将值提升到float <something>

3
当从csv文件中导入数字时,我需要将它们转换为带单位的浮点数。
目前我使用内联函数来完成这个任务:
data |> List.map float |> List.map (fun n -> n * 1.0<m>)

但我在想是否有更优雅的方法来做到这一点,或者我必须创建自己的“单位”模块来进行转换?

如果能有像这样的东西就太好了,但我怀疑这是不可能的...

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

这是我之前问题的相反面(如何通用地去除F#测量单位)。

更新:对于自定义单位,我尝试了以下方法,效果还不错:

[<Measure>]
type km = 
    static member lift (v:float) = v * 1.0<km>

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

or, following the question in this answer

data |> List.map (float >> km.lift)
2个回答

2

鉴于单位纯粹是编译时的,它似乎不太可能改变。 - Alexey Romanov
FloatWithMeasure刚刚让我省了很多时间,谢谢 :) - Ed Ayers

1

你必须映射两次有什么原因吗?这个有什么问题:

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

是的,我可以这样做,但我的想法是我的lift函数应该适用于浮点数。请参见问题中更新后的代码。 - Benjol

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接