> From: Hal Daume III <[EMAIL PROTECTED]> > then, why are we allowed to rebind f in a let clause :)
1. There is no real reason not to allow this, so such a rule would just limit the flexibility of the language and annoy programmers. It would also make it somewhat harder to write compilers, because they would have to check uselessly for violations of an extra rule. 2. It increases the ability to move code around without changing it. For example, suppose you have g = let f = 5 in ... f x = ... g .... Now let's say you realize you only ever use g in f. So you have no need to clutter the top-level namespace with g. So you can cut and paste to make f x = ... (let f = 5 in ...) ... There is another, possibly more significant reason, however: sometimes it is very nice to be able to "shadow" an external variable (including perhaps the function being defined) in a function definition: it explicitly prevents you from using that variable by mistake. This technique is often used to avoid bugs in loop code (though this is not specifically a reason to allow rebinding of the thing being defined...) David Feuer This message has been brought to you by the letter alpha and the number pi. _______________________________________________ Haskell mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell