为什么foldr在Haskell中不懒于元组

尼基塔

可以这样写:

head $ foldr (:) [] [1..]
-- 1

但是,当我尝试处理元组时,它会进入无限循环:

head . fst $ foldr (\ x (ls, _) -> (x : ls, 0)) ([], 0) [1..]

我需要这个的原因是因为我想在内部函数中传递产生的元素的数量。像那样:

foldr go ([], 0) [1..]
go num (ls, cnt) = -- use cnt to get l and produce new pair (l : ls, cnt + 1)
卢基

默认情况下,模式匹配是严格的。那是,

(\(x,y) -> (1:x,y)) _|_ = _|_

不过,您可以使用模式使用惰性模式匹配~

(\ ~(x,y) -> (1:x,y)) _|_ = (1:_|_, _|_)

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么不转义序列在元组中起作用

来自分类Dev

为什么在Haskell中可以使用foldl而不是foldr来反向列出

来自分类Dev

为什么foldr可以在Haskell中的无限列表上工作,而foldl却不能呢?

来自分类Dev

为什么将元组括在括号中?

来自分类Dev

为什么元组比python中的列表大?

来自分类Dev

foldr函数的返回值是什么(在Haskell中),它得到的参数是什么?

来自分类Dev

为什么我可以在Haskell中打印包含5个元素但不包含6个元素的元组?

来自分类Dev

Haskell中foldr vs foldr1的用法

来自分类Dev

为什么Haskell中的列表理解不包含大小<n的列表

来自分类Dev

为什么在此Haskell代码中不传递数据类型?

来自分类Dev

为什么返回元组?

来自分类Dev

列出Haskell中的元组

来自分类Dev

Haskell中的元组

来自分类Dev

为什么foldr会反转foldl的参数?

来自分类Dev

为什么foldr'不如foldl'严格?

来自分类Dev

Haskell中的`foldl`和`foldr`的数值问题

来自分类Dev

Haskell中的Foldr和Foldl函数

来自分类Dev

Haskell迭代参数类型不匹配,为什么?

来自分类Dev

Haskell'showInt'不在范围内:为什么不呢?

来自分类Dev

Haskell迭代参数类型不匹配,为什么?

来自分类Dev

为什么在Python中打印元组会使反斜杠加倍?

来自分类Dev

在此示例中,为什么使用元组比列表快?

来自分类Dev

为什么返回元组比Python中的多个值更快?

来自分类Dev

为什么sum比haskell中的foldl'慢?

来自分类Dev

睡在javascript中,为什么不循环?

来自分类Dev

为什么模型中的数据不持久?

来自分类Dev

为什么在dplyr中工作或不工作

来自分类Dev

当元组中仅存在一个列表时,为什么元组的类型为列表?

来自分类Dev

为什么不能在命名的元组中将名称的类型指定为Julia中的符号元组?

Related 相关文章

  1. 1

    为什么不转义序列在元组中起作用

  2. 2

    为什么在Haskell中可以使用foldl而不是foldr来反向列出

  3. 3

    为什么foldr可以在Haskell中的无限列表上工作,而foldl却不能呢?

  4. 4

    为什么将元组括在括号中?

  5. 5

    为什么元组比python中的列表大?

  6. 6

    foldr函数的返回值是什么(在Haskell中),它得到的参数是什么?

  7. 7

    为什么我可以在Haskell中打印包含5个元素但不包含6个元素的元组?

  8. 8

    Haskell中foldr vs foldr1的用法

  9. 9

    为什么Haskell中的列表理解不包含大小<n的列表

  10. 10

    为什么在此Haskell代码中不传递数据类型?

  11. 11

    为什么返回元组?

  12. 12

    列出Haskell中的元组

  13. 13

    Haskell中的元组

  14. 14

    为什么foldr会反转foldl的参数?

  15. 15

    为什么foldr'不如foldl'严格?

  16. 16

    Haskell中的`foldl`和`foldr`的数值问题

  17. 17

    Haskell中的Foldr和Foldl函数

  18. 18

    Haskell迭代参数类型不匹配,为什么?

  19. 19

    Haskell'showInt'不在范围内:为什么不呢?

  20. 20

    Haskell迭代参数类型不匹配,为什么?

  21. 21

    为什么在Python中打印元组会使反斜杠加倍?

  22. 22

    在此示例中,为什么使用元组比列表快?

  23. 23

    为什么返回元组比Python中的多个值更快?

  24. 24

    为什么sum比haskell中的foldl'慢?

  25. 25

    睡在javascript中,为什么不循环?

  26. 26

    为什么模型中的数据不持久?

  27. 27

    为什么在dplyr中工作或不工作

  28. 28

    当元组中仅存在一个列表时,为什么元组的类型为列表?

  29. 29

    为什么不能在命名的元组中将名称的类型指定为Julia中的符号元组?

热门标签

归档