我正在使用 F# 进行练习,并且我已经为 F# 实现了类型约束的比较函数。在 C# 中,它是由 this 实现的
// in C#
static int cmp<T>(T x, T y) where T: System.IComparable<T>
{
return x.CompareTo(y);
}
但是,在 F# 中,我想出的最好方法是这个。
(* in F# *)
let cmp (x: 'a when 'a :> 'a System.IComparable) (y: 'a when 'a :> 'a System.IComparable)
= x.CompareTo(y)
我尝试了下面的一个,但它没有用
let cmp (x: 'a) (y: 'a) when 'a :> 'a System.IComparable
= x.CompareTo(y)
我的工作 F# 样本是最短的方式还是有另一种方式?