F# 中的比较函数有什么作用

Roa*_*ald 2 f#

我正在阅读 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 
Run Code Online (Sandbox Code Playgroud)

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

> compare "abf" "abc"
3
Run Code Online (Sandbox Code Playgroud)

比较什么compare

kae*_*fer 5

F # 语言规范提供了语言元素的正式描述。功能请compare参见第 17 页。173“8.15.6 哈希、= 和比较的行为”,其中以伪代码描述行为以实现以下目标:

  • 字符串的序数比较
  • 数组的结构比较
  • 本机整数的自然排序(不支持 System.IComparable)

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

对于字符串,比较依赖于System.String.CompareOrdinal,其返回值在方法下描述System.String.Compare

小于零:按排序顺序,strA 位于 strB 之前。

零:在排序顺序中,strA 与 strB 出现在相同的位置。

大于零:strA 按排序顺序位于 strB 之后。