В книге Мартина Одерского «Программирование в Scala» приведен пример вычисления последовательности Фибоначчи, начиная с 2-х чисел, переданных в качестве аргументов функции fibFrom.
def fibFrom(a: Int, b: Int): Stream[Int] =
a #:: fibFrom(b, a + b)
Если вы примените метод take () к этой рекурсивной функции, например:
fibFrom(1, 1).take(15).print
Вывод будет:
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, empty
Возможно, это вывод очевидно для более опытных людей, но я не понимаю, как именно этот метод take () делает поток для дальнейшего расчета. 15 как-то неочевидно передается в fibFrom ()?