F#の測定単位-「持ち上げる」値がフロートする<何か>

StackOverflow https://stackoverflow.com/questions/419521

  •  03-07-2019
  •  | 
  •  

質問

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

または、この回答

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

他のヒント

2回マッピングする必要がある理由はありますか?これの何が問題なのですか:

data |> List.map (fun x -> (float x) * 1.0<m>)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top