Douglas Philips wrote:
On 2007 Mar 20, at 3:30 PM, Dan Weston indited:
I looked up John Backus on wikipedia and followed a link to ALGOL:
http://en.wikipedia.org/wiki/ALGOL_60
where the following "undesirable" property of call-by-name is mentioned.
"ALGOL 60 allowed for two evaluation strategies for parameter passing:
the common call-by-value, and call-by-name. Call-by-name had certain
limitations in contrast to call-by-reference, making it an undesirable
feature in language design. For example, it is impossible in ALGOL 60
to develop a procedure that will swap the values of two parameters if
the actual parameters that are passed in are an integer variable and
an array that is indexed by that same integer variable. However,
call-by-name is still beloved of ALGOL implementors for the
interesting thunks that are used to implement it."
I suppose that call-by-name is still beloved of Haskell implementors
as well?
Notice that the "problem" with call-by-name is when side-effects are
involved. In a pure-functional-environment those "problems" don't arise...
--Doug
It was the phrase "making it an undesirable feature in language design"
that jumped out at me. Here "language" is an implicitly universally
quantified variable, and the phrase beta-reduces to "call-by-name is an
undesirable feature in Haskell design".
_______________________________________________
Haskell mailing list
Haskell@haskell.org
http://www.haskell.org/mailman/listinfo/haskell