1

有人可以解释如何理解这个符号:

((a, b) → a) → a → [b] → a

请参阅:https ://ramdajs.com/docs/#reduce

4

2 回答 2

4
((a, b) → a) → a → [b] → a
^^^^^^^^^^^^   ^   ^^^   ^
1              2   3     4

这是一个接受三个参数 (1) (2) (3) 并返回类型a(4) 的值的函数:

  1. 第一个参数是一个函数,它接受两个参数(可能是相同类型)并返回一个与第一个参数相同类型的值。
  2. 第二个参数是类型的值a
  3. 第三个参数是类型值的列表b
reduce( (acc, x) => acc + x.length,    0,   ["foo", "bar", "baz"]); //=> 9
//       ^^^  ^     ^^^^^^^^^^^^^^     ^    ^^^^^^^^^^^^^^^^^^^^^        ^
//       a    b     a                  a    [b]                          a
//     ((a -> b) -> a             ) -> a -> [b]                       -> a

在这种情况下a代表number类型并b代表string类型。

于 2021-03-17T22:47:12.730 回答
3

我相信它的 Hindley-Milner 符号:https ://drbolean.gitbooks.io/mostly-adequate-guide-old/content/ch7.html

于 2021-03-17T07:51:51.960 回答