Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Path: utzoo!mnetor!uunet!seismo!mcvax!unido!uklirb!rehbold
From: rehbold@uklirb.UUCP
Newsgroups: comp.lang.misc
Subject: Re: Lazy evaluation (was "H.O.Functions - (nf)
Message-ID: <26400003@uklirb.UUCP>
Date: Mon, 13-Jul-87 09:49:00 EDT
Article-I.D.: uklirb.26400003
Posted: Mon Jul 13 09:49:00 1987
Date-Received: Wed, 15-Jul-87 04:15:39 EDT
References: <1437@tekchips.UUCP>
Lines: 17
Nf-ID: #R:tekchips:-143700:uklirb:26400003:000:968
Nf-From: uklirb!rehbold    Jul 13 14:49:00 1987

I too think that the software engineering aspect is an important feature of lazy
evaluation. Since lazy functions always produce only as much data as some other
function really uses the generating function can be written completely 
independent from the using one. 
In imperative languages, all data generation and using has to be done in the 
*same* procedure; otherwise no coordination would be possible. Even if the 
stream of data to be generated is not infinite, no one would like the idea of 
first generating a lot of data and then using it, perhaps only needing some of 
the data because the solution was found quite early.
It's this separation between generating and consuming functions that enables
the programmer to write clean, modular and easy to understand programs without
having to think about coordination problems, because these don't appear with
lazy evaluation.

Robert Rehbold
University of Kaiserslautern, FRG
UUCP: ..!mcvax!unido!uklirb!rehbold