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
方法提供正确排序的用户类型。
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
方法提供正确排序的用户类型。