Slide 35
Slide 35 text
遅延評価による無限リスト
def iterate[T](f:T => T, x:T):Stream[T] = Stream.cons(x, iterate(f, f(x)))
iterate((x:Int) => x + 1, 1) // 1から開始で、+1ずつされていく無限リスト
.take(10) // 10要素取得
.toList // リスト化(この時点で初めて評価されてリストになる)
// List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
val codename = List("Playground", "Kestrel", "Merlin", "Tiger", "Mustang", "Dolphin")
iterate((x:Int) => x + 1, 1)
.zip(codename)
.toList
// List[(Int, String)] =
// List((1,Playground), (2,Kestrel), (3,Merlin),
// (4,Tiger), (5,Mustang), (6,Dolphin))