Гарантирует ли List.partition сохранение порядка? - PullRequest
3 голосов
/ 20 февраля 2010

Я заметил, что похоже, что так себя ведет, но я не хочу на это полагаться, если это не преднамеренно. Вот код вопроса:

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 Ответ

5 голосов
/ 20 февраля 2010

В спецификации не сказано:

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

но текущая реализация в FSharp.Core сохраняет порядок (она использует мутацию под капотом, чтобы создать результирующие списки по порядку, так как идет по оригиналу; это эффективно). Я попрошу посмотреть, намерены ли мы продвинуть это в спецификации, поскольку это кажется полезной гарантией.

...