我注意到它似乎表现得这样,但如果不是故意的话,我不想依赖它。这是有问题的代码:
let bestValuesUnder max =
allValues
>> List.partition (fun value -> value < max)
>> function
| ([], bad) -> [List.min bad]
| (good, _) -> good // |> List.sortBy (fun value -> -value)
allValues
是一个返回int列表的函数。
答案 0 :(得分:5)
规范没有说:
http://msdn.microsoft.com/en-us/library/ee353782(VS.100).aspx
但是FSharp.Core中的当前实现确实保留了顺序(它使用了底层的变异来按顺序创建结果列表,因为它走的是原始的;这很有效)。我会问,看看我们是否打算将此推广到规范,因为它似乎是一个有用的保证。