如何解释这个 Ramda 签名?
How to interpret this Ramda signature?
谁能解释一下如何理解这个符号:
((a, b) → a) → a → [b] → a
我相信它的 Hindley-Milner 符号:https://drboolean.gitbooks.io/mostly-adequate-guide-old/content/ch7.html
((a, b) → a) → a → [b] → a
^^^^^^^^^^^^ ^ ^^^ ^
1 2 3 4
这是一个接受三个参数 (1) (2) (3) 和 returns 类型 a
(4) 的值的函数:
- 第一个参数是一个函数,它有两个参数(可能是同一类型)和returns一个与第一个参数类型相同的值。
- 第二个参数是
a
类型的值
- 第三个参数是
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
类型。
谁能解释一下如何理解这个符号:
((a, b) → a) → a → [b] → a
我相信它的 Hindley-Milner 符号:https://drboolean.gitbooks.io/mostly-adequate-guide-old/content/ch7.html
((a, b) → a) → a → [b] → a
^^^^^^^^^^^^ ^ ^^^ ^
1 2 3 4
这是一个接受三个参数 (1) (2) (3) 和 returns 类型 a
(4) 的值的函数:
- 第一个参数是一个函数,它有两个参数(可能是同一类型)和returns一个与第一个参数类型相同的值。
- 第二个参数是
a
类型的值
- 第三个参数是
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
类型。