F#中的compare函数是做什么的

What does the compare function in F# do

我在阅读 F# 文档时遇到了 compare 函数。文档中的示例并没有真正说明函数的作用。我也尝试了一些输入,但找不到清晰的模式。

比较列表时,值为 -1、0 或 1。

> compare [1;2;4] [8;1;4;9]
-1
> compare [1;2;4] [1;2;3]
1
> compare [1;2;4] [1;2;4]
0 

但是当比较字符串时,数字可能会大于 1。

> compare "abf" "abc"
3

compare比较什么?

F# Language specification 提供语言元素的正式描述。对于 compare 函数,请参阅 p. 173 “8.15.6 Hash、= 和 Compare 的行为”,其中以伪代码的形式描述了实现以下目标的行为:

  • Ordinal comparison for strings
  • Structural comparison for arrays
  • Natural ordering for native integers (which do not support System.IComparable)

结构比较是函数式编程中的一个重要概念,适用于元组、列表、选项、数组和用户定义的记录、联合以及结构类型,其组成字段类型允许结构相等、散列和比较。

对于字符串,比较依赖于System.String.CompareOrdinal, whose return values are described under the System.String.Compare方法:

Less than zero: strA precedes strB in the sort order.

Zero: strA occurs in the same position as strB in the sort order.

Greater than zero: strA follows strB in the sort order.