Bjorn Lisper wrote:
> >Joe Fasel wrote:
> >> Actually, I think we were originally thinking of laziness, rather
> >> than nonstrictness, and weren't considering languages like Id as
> >> part of our domain, but Arvind and Nikhil (quite correctly) convinced
> >> us that the semantic distinction of strictness versus nonstrictness
> >> should be our concern, rather than the operational notions of
> >> eagerness and laziness.
>
> "Frank A. Christoph" <[EMAIL PROTECTED]>:
> >Please elucidate. Where does this difference become important?
> What impact
> >did it have on the language?
>
> It is definitely important in parallel processing, where you may want to
> spawn off activities speculatively, to utilize idle processors, and kill
off
> these activities later if it is discovered that their results are not
> needed. This yields nonstrict behaviour if implemented correctly,
> but it is not lazy.

Ah, right. Someone mentioned just recently (I forget who---sorry) that
nothing in the Report forces a Haskell implementation to use call-by-need. I
guess this is a manifestation of the change of direction, from laziness to
non-strictness...?

There is a broader sense of the term "lazy" which includes not only
call-by-need but also call-by-name. Since Joe wrote "eagerness and
laziness", terms which are apparently in opposition, I assumed this was the
meaning he intended (since CBV and CBName are dual, but the relationship
between CBV and CBNeed is not so neat). I actually was more interested in
whether there is a practical distinction between a call-by-name calculus and
a calculus whose lambda-abstractions are modelled by non-strict functions.

--FC



Reply via email to