Haskell 中的 $ 是什么,以及如何将函数应用于函数

柯克布罗德赫斯特

我正在用 Haskell 做 Project Euler,并在完成第一个问题时找到了要学习的东西这是我的代码:

isValid x = (mod x 3 == 0) || (mod x 5 == 0)
listValid :: Integer -> [Integer]
listValid n = [x | x <- [1..n-1], isValid x]

该函数listValid将得到所有小于n可以被 3 或 5 整除的正整数。很简单。

*Main> listValid 10
[3,5,6,9]

现在我需要总结它们。我认为 sum 函数是正确的方法。我不明白的是为什么前两个版本有效,然后第三个版本无效。

*Main> sum (listValid 10)
23
*Main> sum $ listValid 10
23
*Main> sum listValid 10

<interactive>:4:5:
    Couldn't match type ‘[Integer]’ with ‘a0 -> t’
    Expected type: Integer -> a0 -> t
      Actual type: Integer -> [Integer]
    Relevant bindings include it :: t (bound at <interactive>:4:1)
    In the first argument of ‘sum’, namely ‘listValid’
    In the expression: sum listValid 10

这是一个操作顺序问题,我需要用括号括起来以断言应该首先应用哪个函数?如果是$这样,第二个版本做什么?

sepp2k

这是关于关联性的。函数应用程序是左关联的,所以sum listValid 10等价于(sum listValid) 10,而不是sum (listValid 10)如果你考虑一下,它必须是这样的:如果你定义了add x y = x+y,你不会想要add 1 2等同于add (1 2)

所以这里的问题是,在 中sum listValid 10,它不认为listValid 10sum; 它认为listValid是 的参数sum,然后10是 的参数sum listValid

$解决了这个问题,因为它是一个中缀运算符,并且非常清楚sum它的左操作数listValid 10是它的右操作数(请记住,函数应用程序的优先级高于任何中缀运算符,因此它不能被视为(sum $ listValid) 10)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将函数应用于 Haskell 列表中的每个元素?

来自分类Dev

如何将函数列表中的每个函数应用于Haskell中一行中的值

来自分类Dev

在Haskell中,最常见的将函数应用于列表的第N个元素的方法是什么?

来自分类Dev

在Haskell中是否有将多个函数应用于单个值的组合器?

来自分类Dev

如何将具有2个参数的lambda应用于Haskell中的列表?

来自分类Dev

如何将具有2个参数的lambda应用于Haskell中的列表?

来自分类Dev

将函数列表中的每个函数逐渐应用于值并累积结果的函数的名称是什么?

来自分类Dev

如何将函数应用于数组中的所有元素(在C ++模板类中)

来自分类Dev

如何将函数应用于pandas数据框中的列中的每个值?

来自分类Dev

Haskell中的部分函数应用

来自分类Dev

如何将聚合函数应用于Google BigQuery中从JSON提取的数据?

来自分类Dev

如何将简单函数应用于数据帧中顺序标记的变量?

来自分类Dev

如何将函数应用于增加数据帧中的数据子集

来自分类Dev

R编程如何将列表中的单个元素应用于函数

来自分类Dev

如何将OpenCV函数polylines()应用于C ++中的列表

来自分类Dev

如何将函数迭代地应用于Excel中的数据组

来自分类Dev

如何将参数值列表应用于R中的函数?

来自分类Dev

如何将聚合函数应用于Pandas中数据透视表的所有列

来自分类Dev

如何将函数应用于多个列以在R中创建多个新列?

来自分类Dev

在熊猫中,如何将函数应用于返回两列的每一列

来自分类Dev

如何将特定列应用于R中的sapply函数?

来自分类Dev

如何将函数应用于熊猫中每一行的对象属性

来自分类Dev

如何将函数应用于r中的多个列表?

来自分类Dev

在Julia中,如何将函数应用于具有数组的数据框?

来自分类Dev

如何将单变量函数应用于R中的多个列表

来自分类Dev

如何将颜色应用于ggplot2中的函数

来自分类Dev

如何将函数应用于数据框中的一定数量的行?

来自分类Dev

如何将函数应用于jq中的多个字段

来自分类Dev

如何将单个函数应用于对象列表中属性的不同组合?

Related 相关文章

  1. 1

    如何将函数应用于 Haskell 列表中的每个元素?

  2. 2

    如何将函数列表中的每个函数应用于Haskell中一行中的值

  3. 3

    在Haskell中,最常见的将函数应用于列表的第N个元素的方法是什么?

  4. 4

    在Haskell中是否有将多个函数应用于单个值的组合器?

  5. 5

    如何将具有2个参数的lambda应用于Haskell中的列表?

  6. 6

    如何将具有2个参数的lambda应用于Haskell中的列表?

  7. 7

    将函数列表中的每个函数逐渐应用于值并累积结果的函数的名称是什么?

  8. 8

    如何将函数应用于数组中的所有元素(在C ++模板类中)

  9. 9

    如何将函数应用于pandas数据框中的列中的每个值?

  10. 10

    Haskell中的部分函数应用

  11. 11

    如何将聚合函数应用于Google BigQuery中从JSON提取的数据?

  12. 12

    如何将简单函数应用于数据帧中顺序标记的变量?

  13. 13

    如何将函数应用于增加数据帧中的数据子集

  14. 14

    R编程如何将列表中的单个元素应用于函数

  15. 15

    如何将OpenCV函数polylines()应用于C ++中的列表

  16. 16

    如何将函数迭代地应用于Excel中的数据组

  17. 17

    如何将参数值列表应用于R中的函数?

  18. 18

    如何将聚合函数应用于Pandas中数据透视表的所有列

  19. 19

    如何将函数应用于多个列以在R中创建多个新列?

  20. 20

    在熊猫中,如何将函数应用于返回两列的每一列

  21. 21

    如何将特定列应用于R中的sapply函数?

  22. 22

    如何将函数应用于熊猫中每一行的对象属性

  23. 23

    如何将函数应用于r中的多个列表?

  24. 24

    在Julia中,如何将函数应用于具有数组的数据框?

  25. 25

    如何将单变量函数应用于R中的多个列表

  26. 26

    如何将颜色应用于ggplot2中的函数

  27. 27

    如何将函数应用于数据框中的一定数量的行?

  28. 28

    如何将函数应用于jq中的多个字段

  29. 29

    如何将单个函数应用于对象列表中属性的不同组合?

热门标签

归档