gpt4 book ai didi

lazy-evaluation - 隐式延迟收集/获取不被视为 "lazy"对象

转载 作者:行者123 更新时间:2023-12-04 07:01:39 27 4
gpt4 key购买 nike

documentation for gather/take mentions

Binding to a scalar or sigilless container will also force laziness.



然而,
my \result = gather { for 1..3 { take $_² } };
say result.is-lazy # OUTPUT: «False␤»

如果您使用标量并使用 := 进行绑定(bind),也会发生同样的情况。有什么方法可以创建隐式惰性收集/获取语句吗?

更新:它实际上是惰性的,只是它没有以预期的方式响应 is-lazy 方法:
my $result := gather { for 1..3 { say "Hey"; take $_² } };
say $result[0] # OUTPUT: «Hey␤1␤»

所以问题是“什么是 is-lazy 的条件才能认为事情实际上是惰性的?”

最佳答案

我认为问题在于您实际上无法知道 gather 内部发生了什么。堵塞。这就是为什么 Seq对象告诉你它不是懒惰的。

也许更多的是文档问题:如果 is-lazy返回 True , 那么你可以是 确定 Seq (好吧,实际上它的底层 Iterator )不会自行结束。如果 is-lazy返回 False ,这基本上意味着我们无法确定。

有人可能会争辩说,在那种情况下 is-lazy应该返回 Bool type 对象,它也将被解释为 false (因为所有类型对象都被认为是 False 在 bool 上下文中)。但这至少会表明它确实是未定/不可定。

关于lazy-evaluation - 隐式延迟收集/获取不被视为 "lazy"对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55688419/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com