Haskell GHCi打印延迟序列,但Scala REPL不打印
发布时间:2020-12-16 09:06:53 所属栏目:安全 来源:网络整理
导读:我想打印出一个数字流,但下面的代码只打印出序列中的第一个数字: for ( n - Stream.from(2) if n % 2 == 0 ) yield println(n)2res4: scala.collection.immutable.Stream[Unit] = Stream((),?) 在Haskell中,以下内容会一直打印出数字,直到被打断,我想在Scal
我想打印出一个数字流,但下面的代码只打印出序列中的第一个数字:
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(为什么人们会想要无限的单元序列?):
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 虽然,最终它会崩溃程序(由于物化序列的大量长度). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |