Die offensichtlichste Verwendung von Faulheit in einer Alltagssprache ist die "if" -Anweisung, wo nur ein Zweig der Bedingung ausgeführt wird.
Das Gegenteil einer rein nicht-strikten (faulen) Sprache wäre eine rein strikte Sprache.
Es gibt mindestens einen Fall, in dem "rein strikt" von Vorteil ist, nämlich branch predication.
Raute Umschreibung des verlinkten Artikels:
Vor langer Zeit in der Welt des CPUs, Anweisungen geladen execute wurden, wenn die Verzweigungsbedingung getestet wurde. Irgendwann wurden Befehlspipelines hinzugefügt, um die Ladezeit zu reduzieren. Der Nachteil war, dass eine CPU nicht wusste, welchen Zweig sie laden musste, also würde sie standardmäßig einen laden. Wenn der Zweig in die andere Richtung ging, würde die Pipeline blockieren, während der Code für den anderen Zweig geladen wurde.
Die Lösung ist, beide Zweige zu laden, führen Sie beide Zweige aus, dann sagt Ihnen das Ergebnis der bedingten, welches Zweig Ergebnis zu halten, und welche wegwerfen. Dann bekommst du keine Pipeline-Stände.
Dies ist mein liebstes (nur?) Beispiel für den Nutzen einer rein strikten Sprache.
Theorie beiseite, kann es clevere Anwendungen der strengen Bewertung in faulen Sprachen geben. Haskell hat das "!" Strictness-Annotation für Datentypen zur Verwendung bei der Erzwingung der Auswertung von Termen, bei denen die Faulheit nur zu einem Speicherblob verursacht hätte. Gute Beispiele dafür, wann man die Faulheit abschalten kann, sind sicherlich "clevere Anwendungen der strengen Bewertung". – rndmcnlly