在我们查阅Ramda的文档时, 常会见到一些"奇怪"的类型签名和用法:"奇怪"的类型签名: (Applicative f, Traversable t) => (a → f a) → t (f a)....Ramda 为人熟知的一面Ramda 经常被当做Lodash 的另外一个"更加FP"的替代库.相对于Lodash, Ramda 的优势(之一)在于柯里化和data last的设计带来的便捷的管道式编程...(pipe).举一个简单的代码对比示例:Ramda: const myFn = R.pipe ( R.fn1, R.fn2 ('arg1', 'arg2'), R.fn3 ('arg3'), R.fn4...的API文档中, 类型签名的语法有些"奇怪":addNumber → Number → Number我们结合Ramda 的柯里化规则, 稍加推测, 可以将这个函数转换为TypeScript 的定义:export...可以理解为一种上下文, 这段类型签名可以先简单地理解为:将一个包裹在上下文中的函数取出, 再将另一个包裹在上下文中的值取出, 调用函数后, 将函数的返回值重新包裹进上下文中并返回.这里的上下文是一个泛指