Infinite Datenstrukturen und Trägheit

Träge Werte haben wir bereits in Kapitel 8 beschrieben. In funktionalen Sprachen, die standardmäßig träge sind, erleichtert die Trägheit die Unerstützung von infiniten (endlosen) Datenstrukturen.

Betrachten Sie beispielsweise die folgende Scala-Methode fib, mit der man die Fibonacci-Zahl für n in in der unendlichen Fibonacci-Folge berechnen kann:

def fib(n: Int): Int = n match {
  case 0 | 1 => n
  case _ => fib(n-1) + fib(n-2)
}

Wenn Scala vollständig träge wäre, könnten wir uns eine Definition der Fibonacci-Folge wie die folgende vorstellen, die keine unendliche Schleife erzeugen würde:

fibonacci_sequence = for (i <- 0 to infinity) yield fib(i)

Scala ist standardmäßig nicht träge (und es gibt daher auch kein ...

Get Programmieren mit Scala now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.