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

Reply via email to