def addStream(s1: LazyList[Int], s2: LazyList[Int]): LazyList[Int] = { s1 zip s2 map (p => p._1 + p._2) } def fibonacci(): LazyList[Int] = { 0 #:: addStream( 1 #:: fibonacci(), fibonacci() ) } fibonacci().take(10).toList