如何一般性地删除F#度量单位

Ben*_*jol 3 f# units-of-measurement

我有一些数据操作代码,最后吐出csv.

我开始升级它以在任何地方添加度量单位,但我现在遇到了我的csv函数问题:

val WriteCSV : string -> 'a list array -> 'b list -> string -> unit
Run Code Online (Sandbox Code Playgroud)

(参数是fileName,列数组,列标题,分隔符)

我之前发送[| s; x; y |]到WriteCSV的地方,我现在有一个问题,因为我无法发送[| skm; XMM; 青运|].

我尝试编写一个通常删除度量单位的函数,但它不起作用.

let removeUnit (n:float<_>) = n/1.0<_>
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  • 为什么不起作用?
  • 可以使它工作吗?
  • 有没有其他方法可以解决这个特殊问题?

lee*_*een 7

如果我的问题正确,将其转换为"纯"浮动会移除单位.例如:

[<Measure>] type m
[<Measure>] type km

let removeUnit (x:float<_>) =
    float x

let foo = removeUnit 2.6<m>
let foo2 = removeUnit 2.1<km>
Run Code Online (Sandbox Code Playgroud)

val removeUnit:float <'u> - > float