3

通常,当我需要构建一个从 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)
4

2 回答 2

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)
于 2013-08-12T02:54:28.610 回答
3

浮点循环可能很危险,因为它们隐藏了累积的舍入误差。请参阅F# 浮点范围是实验性的,可能会被弃用以获取更多详细信息。

我相信,最简单的方法是将循环保持在一个普通的、非测量的int,并转换循环内的值。

let otherTestFunc =
    [0 .. 10]
    |> List.map (float >> (*) 1.0<metre>)
    |> List.map testFunc
于 2013-08-12T12:50:27.523 回答