gpt4 book ai didi

scala - Haskell GHCi 打印惰性序列,但 Scala REPL 不打印

转载 作者:行者123 更新时间:2023-12-04 17:52:50 25 4
gpt4 key购买 nike

我想打印出一串数字,但下面的代码只打印出序列中的第一个数字:

for ( n <- Stream.from(2) if n % 2 == 0 ) yield println(n)
2
res4: scala.collection.immutable.Stream[Unit] = Stream((), ?)

在 Haskell 中,以下保持打印数字直到被打断,我希望在 Scala 中有类似的行为:

naturals = [1..]
[n | n <- naturals, even n]
[2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,

最佳答案

而不是只输出 println(为什么要无限的 Unit 序列?):

for ( n <- Stream.from(2) if n % 2 == 0 ) println(n)

如果你真的想要无限的单元序列,强制结果:

val infUnit = for ( n <- Stream.from(2) if n % 2 == 0 ) yield println(n)
infUnit.force // or convert to any other non-lazy collection

虽然最终它会导致程序崩溃(由于物化序列的长度过长)。

关于scala - Haskell GHCi 打印惰性序列,但 Scala REPL 不打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24247728/

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