Lazy Evaluation
In plain terms
Delaying computation until its result is actually needed.
Going deeper
Lazy evaluation defers work until the value is used, avoiding wasted computation and enabling infinite data structures. Haskell uses it by default.
Under the hood
Enables working with infinite streams and short-circuiting, but can make memory usage and timing harder to predict (space leaks).
Examples
Haskell, Python generators, infinite sequences, database query lazy loading.
Think of it like...
Like not cooking a dish until someone actually orders it.