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

または、この回答の質問に従ってください

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

2 に答える 2

2

現時点では、測定単位を型パラメーターにすることはできないようです (これが変更されるかどうかはわかりません)。したがって、これを書くための最短の方法は次のとおりです。

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

編集

こちらもご覧FloatWithMeasureください

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

于 2009-01-07T09:58:26.690 に答える
1

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

data |> List.map (fun x -> (float x) * 1.0<m>)
于 2009-01-08T12:49:35.830 に答える