Lazy Evaluation - Laziness in Eager Languages

Laziness in Eager Languages

Python

In Python 2.x the range function computes a list of integers (eager or immediate evaluation):

>>> r = range(10) >>> print r >>> print r 3

In Python 3.x the range function returns an iterator which computes elements of the list on demand (lazy or deferred evaluation):

>>> r = range(10) >>> print(r) range(0, 10) >>> print(r) 3
This change to lazy evaluation saves execution time for large ranges which may never be fully referenced and memory usage for large ranges where only one or a few elements are needed at any time.

Python manifests lazy evaluation by implementing iterators (lazy sequences) unlike tuple or list sequences. For instance:

>>> list = range(10) >>> iterator = iter(list) >>> print list >>> print iterator >>> print iterator.next 0
The above example shows that lists are evaluated when called, but in case of iterator, the first element '0' is printed when need arises.
This section requires expansion.

Read more about this topic:  Lazy Evaluation

Famous quotes containing the words laziness, eager and/or languages:

    Six, or at most seven, hours’ sleep is, for a constancy, as much as you or anybody can want: more is only laziness and dozing, and is, I am persuaded, both unwholesome and stupefying.
    Philip Dormer Stanhope, 4th Earl Chesterfield (1694–1773)

    The academic expectations for a child just beginning school are minimal. You want your child to come to preschool feeling happy, reasonably secure, and eager to explore and learn.
    Bettye M. Caldwell (20th century)

    Science and technology multiply around us. To an increasing extent they dictate the languages in which we speak and think. Either we use those languages, or we remain mute.
    —J.G. (James Graham)