
On Mon, 2005-07-18 at 15:19 +0100, Bayley, Alistair wrote:
From: Jerzy Karczmarczuk [mailto:karczma@info.unicaen.fr]
Bernard Pope wrote:
I'll be a little bit pedantic here. Haskell, the language definition, does not prescribe lazy evaluation. It says that the language is non-strict. Lazy evaluation is an implementation technique which satisfies non-strict semantics, but it is not the only technique which does this.
This pedantry is renewed periodically.
It is a pity that nobody ever writes anything about that other methods of implementation of non-strictness, nor about the languages which use those methods.
I believe it might do some good to people who learn functional programming in general, and Haskell in particular. Any takers?
Not a taker (yet - where can I find information about non-lazy implementation of non-strict languages? From Google so far: speculative evaluation (Eager Haskell), call-by-name vs call-by-need.)
Wikipedia frustratingly hints that "other evaluation strategies are possible", but that's all it says: http://en.wikipedia.org/wiki/Non-strict_programming_language
I should have mentioned this paper: @article{Tremblay01, author= {G. Tremblay}, title= {Lenient evaluation is neither strict nor lazy}, journal= {Computer Languages}, volume= {26}, number= {1}, pages= {43--66}, year= {2001}, } (however I think he says that Haskell is lazy!) Cheers, Bernie.