【发布时间】:2019-10-21 03:30:14
【问题描述】:
在尝试扩展 Lazy.jl 中的一个示例时,我遇到了一个评估不懒惰的问题。
README 使用这个例子:
> esquares = @>> Lazy.range() map(x->x^2) filter(iseven);
> esquares[99]
39204
我试图通过允许将过滤器指定为参数来使其动态化,但它最终会评估一个无限列表:
> squares(filt) = @lazy @>> Lazy.range() map(x->x^2) filter(filt);
> squares(iseven)
(4 16 36 64 100 144 196 256 324 400 484 576 676 ... # this keeps printing until interrupting...)
我也试过了:
> @lazy squares(iseven)
(4 16 36 64 100 144 196 256 324 400 484 576 676 ... # this also immediately returns the infinite list
【问题讨论】:
标签: functional-programming julia lazy-evaluation