述語を使用してストリームをフィルタリングしようとしていますが、述語が返す要素を含むリストにストリームを変換しようとするとfalse
、エラーが発生します。
def machine(n:Int) = if (n==0) List(0) else List(n/2,n/3,n/4)
def greater(n:Int) = machine(n).sum > n
val d: Stream[Int] = 2 #:: d.map(_+1).filterNot(greater)
scala> d.take(11).toList
res41: List[Int] = List(2,3,4,5,6,7,8,9,10,11)
//12 is the first number for which greater will return true
scala> d.take(12).toList
//Returns a ton of scala.collection.immutable.Stream errors
誰かがここで何がうまくいかないのか説明してもらえますか? ありがとう。