List.partition是否保证保留顺序?

时间:2010-02-20 18:46:38

标签: f# functional-programming

我注意到它似乎表现得这样,但如果不是故意的话,我不想依赖它。这是有问题的代码:

let bestValuesUnder max =
    allValues
    >> List.partition (fun value -> value < max)
    >> function
        | ([], bad) -> [List.min bad]
        | (good, _) -> good // |> List.sortBy (fun value -> -value)

allValues是一个返回int列表的函数。

1 个答案:

答案 0 :(得分:5)

规范没有说:

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

但是FSharp.Core中的当前实现确实保留了顺序(它使用了底层的变异来按顺序创建结果列表,因为它走的是原始的;这很有效)。我会问,看看我们是否打算将此推广到规范,因为它似乎是一个有用的保证。