通常,当我需要构建一个从0到10的列表时,我只需这样做:[0..10]。这给了我一个从0到10的整数列表。但这次我需要一个从0到10的浮点列表。有没有办法做到这一点?
let testFunc (x: float<metre>) =
x
let otherTestFunc =
[0.0 .. 10.0] // How do I make this return float<metre>
|> List.map (fun x -> testFunc x)
答案 0 :(得分:5)
我刚刚向F#团队报告了这个问题,但您需要在使用Measures时手动指定步骤。
let testFunc (x: float<metre>) =
x
let otherTestFunc =
[0.0 <metre> .. 1.0<metre> .. 10.0 <metre>] // How do I make this return float<metre>
|> List.map (fun x -> testFunc x)
答案 1 :(得分:3)
浮点循环可能很危险,因为它们隐藏了累积的舍入错误。有关详细信息,请参阅F# Floating point ranges are experimental and may be deprecated。
我相信,最简单的方法是将循环保持在一个简单的非测量int
中,然后在循环中转换该值。
let otherTestFunc =
[0 .. 10]
|> List.map (float >> (*) 1.0<metre>)
|> List.map testFunc