Ramda 类型签名下鲜为人知的一面在Ramda 的API文档中, 类型签名的语法有些"奇怪":addNumber → Number → Number我们结合Ramda 的柯里化规则, 稍加推测, 可以将这个函数转换为...number) => number;OK, 那为什么Ramda 的文档不直接使用TypeScript 表达函数的类型呢?...其实上面的示例已经部分回答了这个问题 -- 因为更加简洁.其实Ramda 文档中的类型签名使用的是Haskell 的语法, Haskell 作为一门函数式编程语言, 其语法可以很简洁地表达柯里化的语义,...可以理解为一种上下文, 这段类型签名可以先简单地理解为:将一个包裹在上下文中的函数取出, 再将另一个包裹在上下文中的值取出, 调用函数后, 将函数的返回值重新包裹进上下文中并返回.这里的上下文是一个泛指...我们得到Apply 特异化为Array 的实现:type AP = (f: Array B)>) => (fa: Array) => Array;const