【问题标题】:How to interpret this Ramda signature? [duplicate]如何解释这个 Ramda 签名? [复制]
【发布时间】:2023-03-06 22:43:01
【问题描述】:

谁能解释一下如何理解这个符号:

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

见:https://ramdajs.com/docs/#reduce

【问题讨论】:

标签: functional-programming ramda.js hindley-milner


【解决方案1】:
((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 类型。

【讨论】:

  • 非常好,简洁的答案!我希望 one more line 重新引入括号。
【解决方案2】:

【讨论】:

    猜你喜欢
    • 2020-09-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-29
    • 2019-09-18
    相关资源
    最近更新 更多