相关疑难解决方法(0)

懒惰评估为何有用?

我一直想知道懒惰评估为何有用.我还没有任何人以有道理的方式向我解释; 最重要的是它最终沸腾到"相信我".

注意:我不是指记忆.

haskell functional-programming lazy-evaluation

112
推荐指数
14
解决办法
3万
查看次数

Scala中懒惰的迭代器?

我已经在haskell中读到了,在对迭代器进行排序时,它只根据需要计算qsort的大小,以返回在生成的迭代器上实际计算的值的数量(即,它是懒惰的,即,一旦它完成了LHS第一个数据透镜可以返回一个值,它可以在迭代器上调用"next"时提供一个值,而不是继续旋转,除非再次调用next.

例如,在haskell中,head(qsort list)是O(n).它只是在列表中找到最小值,并且不会对列表的其余部分进行排序,除非访问其余结果qsort list.

有没有办法在Scala中执行此操作?我想在集合上使用sortWith,但只能根据需要进行排序,这样我就可以使用mySeq.sortWith(<).take(3)并且不需要完成排序操作.

我想知道是否可以以懒惰的方式使用其他排序函数(如sortBy),以及如何确保懒惰,以及如何查找有关何时对Scala中的排序进行懒惰评估的任何其他文档.

更新/编辑:我正在寻找使用sortWith等标准排序函数的方法.我宁愿不必实现我自己的quicksort版本只是为了得到懒惰的评价.不应该将它构建到标准库中,至少对于支持懒惰的Stream这样的集合?

sorting scala lazy-evaluation

13
推荐指数
1
解决办法
3336
查看次数