From: schiex@cert.fr (Thomas Schiex)
Newsgroups: comp.lang.functional
Subject: Re: Low level question
Date: 18 Aug 92 14:39:07 GMT
	<NICKH.92Jul14151920@VOILA.VENARI.CS.CMU.EDU>
	<1992Jul14.205627.25659@eng.umd.edu>
	<DELACOUR.92Jul14152041@waxwing.parc.xerox.com>
Organization: CERT, C.S. Dept., Toulouse, France
In-reply-to: delacour@waxwing.parc.xerox.com's message of 14 Jul 92 13:20:41 GMT


You are pushing the cork too far (form the french "pousser le bouchon trop
loin) when you say "The push for lazy programming does not concern
programming, but publishing papers in quite close circles..." 

Even if i won't claim that lazyness is the most interesting feature for a
language, it IS in fact useful. You may find practical uses almost
everywhere, much simplifying your programming. Sometimes increesing
efficiency. See for example:

Constraint satisfaction with delayed evaluation
IJCAI 89. pp 875

It is also useful when you have too handle explicitly huge data (a game tree
for example) that only a part will be used (cutoffs). Instead of relying on
fine programming, with incremental sons development, you may simply define
the WHOLE tree, and it will be automagically developed when needed. It also
allows one to "compute with unknow values". An unusual trick that is quite
useful (i used it for the strictness computing in a lazy lang. compiler in
fact).

It also gives additionnal expressive power (the so-called letrec or rec
features works Ok even if you define immediatly evaluated objects). You may
define objects that may be left unused later (even if their computation is
expensive..). 

All these GOOD thing have too be payed in terms of time (small overhead, so
small it is negligible). But the main issue is DEBUGGING which is very
difficult. Sequencing is completly disturbed and the poor human is lost when
tracing ! (obvious relations with concurrent processing). However some
papers gives interesting debugging issues for lazy languages (for Daisy, see
"Lisp and symbolic computations", in the first numbers).

As you say "the typical programmer doesn't use lazy languages", but there
are programmers that use lazy languages, few obviously, as there were few
C or Pascal language programmer some years ago (no flame please, this is not a
prediction of whatever you may think, just an observed  fact). Things have
to mature. Let them some time !

NB: You should remind yourself of some people, in the fiveties saying "the
transistor has obviously interisting theretical physical features, but it
will NEVER serve any pratical use...". 

--------------------------------------------------------------------------
Schiex Thomas         |                        | Tel: (+33).61.55.70.65    
C.E.R.T. / DERA       |  To iterate is human,  | Fax: (+33).61.55.71.72
2, Av. E. Belin       |  To recurse, divine.   | 
BP 4025               |  (L. Peter Deutsch)    | schiex@cert.fr
31055 Toulouse Cedex  |                        | schiex@irit.fr
--------------------------------------------------------------------------



--
--------------------------------------------------------------------------
Schiex Thomas         |                        | Tel: (+33).61.55.70.65    
C.E.R.T. / DERA       |  To iterate is human,  | Fax: (+33).61.55.71.72
2, Av. E. Belin       |  To recurse, divine.   | 
BP 4025               |  (L. Peter Deutsch)    | schiex@cert.fr
31055 Toulouse Cedex  |                        | schiex@irit.fr
--------------------------------------------------------------------------
Newsgroups: comp.lang.functional,comp.lang.prolog