سؤال
ولدي قائمة من المجموعات التي تمثل إحداثيات نقطة. كيف يمكنني فرزها حسب القيمة الأولى أو الثانية، لدرجة أنني يمكن أن تأمر نقاطي من اليسار إلى اليمين أولا ومن أعلى إلى أسفل في المرة القادمة؟
المحلول
ويبدو أنك تريد منها مثلا.
myList |> List.sortBy fst
<وأ href = "http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/manual/FSharp.Core/Microsoft.FSharp.Collections.List.html" يختلط = "نوفولو noreferrer "> http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/manual/FSharp.Core/Microsoft.FSharp.Collections.List.html
ولكن الصفوف دعم المساواة الهيكلية والمقارنة، وبالتالي فإن الفرز الافتراضي (المعجمي) قد تفعل ما تريد.
نصائح أخرى
ملاحظة جانبية:
وهذا ليس حول فرز ولكن إذا تنسق باستخدام tupled الخاص بك قد ترغب في استخدام <لأ href = "http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/manual/ FSharp.Core / Microsoft.FSharp.Collections.type_Set-1.html "يختلط =" نوفولو noreferrer "> تعيين بدلا من قائمة. باستخدام مجموعة ساعدني لتبسيط تنفيذ نظري تتريس .
let sorted = List.sort_by (fun (a,b) -> a,b) myList
وتغيير أ، ب إذا كنت في حاجة إلى العكس