在我们查阅Ramda的文档时, 常会见到一些"奇怪"的类型签名和用法:"奇怪"的类型签名: (Applicative f, Traversable t) => (a → f a) → t (f a)....Ramda 为人熟知的一面Ramda 经常被当做Lodash 的另外一个"更加FP"的替代库.相对于Lodash, Ramda 的优势(之一)在于柯里化和data last的设计带来的便捷的管道式编程...Ramda 类型签名下鲜为人知的一面在Ramda 的API文档中, 类型签名的语法有些"奇怪":addNumber → Number → Number我们结合Ramda 的柯里化规则, 稍加推测, 可以将这个函数转换为...其实上面的示例已经部分回答了这个问题 -- 因为更加简洁.其实Ramda 文档中的类型签名使用的是Haskell 的语法, Haskell 作为一门函数式编程语言, 其语法可以很简洁地表达柯里化的语义,...相较之下, TypeScript 的重载的表达方式就显得比较臃肿.当然, 使用Haskell 的类型签名的意义不仅于此, 让我们再看看其他"奇怪"的函数类型:ap[a → b] → [a] → [b]