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

Cog*_*eel 3 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)
Run Code Online (Sandbox Code Playgroud)

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

Bri*_*ian 5

规范没有说:

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

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