Ryan Ingram wrote:
What are you trying to get from the "let" binding? Sharing?
Convinience.
let x = foo in bar
is so much easier to write than
(\x -> bar) foo
when foo and/or bar is large.
Trouble is, as soon as you allow let-bindings, some clever person is
going to start writing recursive ones. And actually, that's a useful
thing to be able to do, but it makes figuring out the technical
details... rather nontrivial. (Seriously, I had no idea I was going to
get into this much trouble!)
The usual idea is that "let" represents heap allocation, and you
evaluate the leftmost-outermost redex as usual, doing let substitution
only when necessary to continue evaluation, and garbage-collecting
bindings that no longer refer to variables in the current computation
Right. So ignore the let-bindings unless the redex of interest is a
let-bound variable? That sounds reasonably easy...
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe