0

述語を使用してストリームをフィルタリングしようとしていますが、述語が返す要素を含むリストにストリームを変換しようとすると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

誰かがここで何がうまくいかないのか説明してもらえますか? ありがとう。

4

1 に答える 1