Ord在Ramda的类型注释中意味着什么?

时间:2016-07-27 16:07:01

标签: functional-programming ramda.js

Ramda的documentation for clamp州:

  

     

Ord a => a→a→a→a

     

将数字限制在一个范围内。

     

也适用于其他有序类型,如字符串和日期。

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

我理解“a→a→a→a”是什么意思(一个带有三个相同类型参数的curried函数,并返回与参数相同类型的结果)。

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

2 个答案:

答案 0 :(得分:5)

杰瑞德的答案很棒。这只是从Ramda方面增加了一点视角。

Ramda在其类型注释上有一个long article(免责声明:我写了它。)type constraints部分描述了这些。

胖箭表示左侧的短语限制了右侧的描述。 Ord表示该类型已被排序,即它与<>一起正常运行。这包括内置类型(如字符串,数字和日期)以及具有valueOf方法的用户类型,这些方法可以提供正确的排序。

答案 1 :(得分:1)

Ord是一种有序的数据类型。胖箭头表示参数的前提条件。在这种情况下,我认为这意味着数据类型被约束为类似<>之类的内容的类型(在强类型语言中,您会遇到编译时错误其他任何事情)。