Ramda的类型注解中的Ord是什么意思?

What does Ord mean in Ramda's type annotation?

Ramda 的 documentation for clamp 声明:

clamp

Ord a => a → a → a → a

Restricts a number to be within a range.

Also works for other ordered types such as Strings and Dates.

R.clamp(1, 10, -1) // => 1
R.clamp(1, 10, 11) // => 10
R.clamp(1, 10, 4)  // => 4

我明白“a → a → a → a”是什么意思(一个柯里化函数,它接受三个相同类型的参数,returns一个与参数相同类型的结果)。

“Ord”和粗箭头 (=>) 是什么意思?

Ord 是有序数据类型。粗箭头表示参数的前提条件。在这种情况下,我认为这意味着数据类型被限制为 <> 之类的有意义的类型(在强类型语言中,你会得到任何编译时错误否则)。

Jared 的回答很棒。这只是从 Ramda 方面增加了更多的视角。

Ramda 有一个 long article on its type annotations (disclaimer: I wrote it.) The section on type constraints 描述了这些。

粗箭头表示左侧的短语限制了右侧的描述。 Ord表示类型是有序的,即与<>配合正常。这包括内置类型,例如字符串、数字和日期,以及使用 valueOf 方法提供正确排序的用户类型。