我想在F#中对Version
个对象进行排序:
let maxVersion =
versions
|> Seq.max (fun version -> version)
编译器生成以下错误消息:
类型'(seq - >'a)'不支持'比较'约束。例如,它不支持'System.IComparable'接口
当我在Visual Studio中点击F12来查看Version
的元数据时,它说Version
只实现了ICloneable
,而不是IComparable
。但当我转到sourceof.net时,它表示它实现了IComparable
以及其他一些接口。
F#是否使用不同版本的.NET框架?
答案 0 :(得分:10)
错误消息告诉您(seq->'a)
未实现IComparable
这是真的,因为(seq->'a)
是一个函数,而不是一个序列。
如果你查看Seq.max
的签名,它只需要序列作为参数。
删除lambda (fun version -> version)
,它应该没问题。
否则,如果要为排序应用密钥生成器函数,请改用Seq.maxBy