当前位置:  开发笔记 > 编程语言 > 正文

Haskell:无限列表 - Haskell多么懒惰?

如何解决《Haskell:无限列表-Haskell多么懒惰?》经验,为你挑选了2个好方法。

哈斯克尔有多懒惰?

为什么以下不知道何时停止?

sum ([n^2 | n <- [1..], odd (n^2), n^2 < 100])

Sebastian Re.. 12

这不是关于它是多么懒惰,而是它是否有任何方式可能知道n^2 < 100一旦它是假的,它将永远不再是真的.它没有.

数组理解的这些部分是过滤表达式,而不是停止条件.



1> Sebastian Re..:

这不是关于它是多么懒惰,而是它是否有任何方式可能知道n^2 < 100一旦它是假的,它将永远不再是真的.它没有.

数组理解的这些部分是过滤表达式,而不是停止条件.


而且财产也取决于类型.想象一个环,其中`x ^ 2> 100`但是`(succ x)^ 2 <100` - 第一个过滤后的元素并不意味着所有类型都没有更多的过滤元素.

2> Reid Barton..:

仅仅因为11 ^ 2超过100并不意味着13 ^ 2超过100.嗯......好吧,确实如此,但GHC应该如何解决这个问题呢?它是一个编译器,而不是任意数学真理的证明者.


在其他有些神奇的属性中,用户似乎认为功能编译器具有超过常见的编译器...自动记忆,任意部分评估,代数重写......
推荐阅读
linjiabin43
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有