F# 如何在Fsharp的ResizeArray中进行比较?

F# 如何在Fsharp的ResizeArray中进行比较?,f#,F#,如何按函数比较排序:cmp type Point = { x : float y : float } let s = ResizeArray<Point>() s.Add{x=1.1 ; y=1.1} s.Add{x=2.2 ; y=2.2} s.Add{x=3.3 ; y=3.3} s.Add{x=2.2 ; y=2.0} let cmp (A:Point) (B:Point) = A.x + A.y < B.x

如何按函数比较排序:cmp

type Point =
    {
        x : float
        y : float
    }

let s = ResizeArray<Point>()

s.Add{x=1.1 ; y=1.1}
s.Add{x=2.2 ; y=2.2}
s.Add{x=3.3 ; y=3.3}
s.Add{x=2.2 ; y=2.0}

let cmp (A:Point) (B:Point) = 
    A.x + A.y < B.x + B.y

s.Sort()

//s.Sort() 
s |> printfn("%A")

我尝试使用sortWith,但仍然不正确。你能帮我修一下吗

type Point =
    {
        x : float
        y : float
    }

let s = ResizeArray<Point>()

s.Add{x=1.1;y=1.1}
s.Add{x=2.2;y=2.2}
s.Add{x=1.0;y=1.0}

let cmp (A:Point) (B:Point) =
    if (A.x+A.y) >= (B.x+B.y) then 1
    else 0

List.sortWith cmp s |> List.iter (fun x -> printfn("%f %f\n") x.x x.y)
类型点=
{
x:浮动
y:浮子
}
设s=ResizeArray()
s、 加上{x=1.1;y=1.1}
s、 加上{x=2.2;y=2.2}
s、 加上{x=1.0;y=1.0}
让cmp(A:点)(B:点)=
如果(A.x+A.y)>=(B.x+B.y),则1
其他0
List.sortWith cmp s |>List.iter(乐趣x->printfn(“%f%f\n”)x.x x x.y)
您必须为您的类型提供:

s.Sort(有趣的ab->a.x+a.y-b.x-b.y |>int)
type Point =
    {
        x : float
        y : float
    }

let s = ResizeArray<Point>()

s.Add{x=1.1;y=1.1}
s.Add{x=2.2;y=2.2}
s.Add{x=1.0;y=1.0}

let cmp (A:Point) (B:Point) =
    if (A.x+A.y) >= (B.x+B.y) then 1
    else 0

List.sortWith cmp s |> List.iter (fun x -> printfn("%f %f\n") x.x x.y)