
On 10.07.2013 10:00, Jon Fairbairn wrote:
Andreas Abel
writes: Proposal: add a non-recursive let to the Haskell language. In
let' p = e in e' do { ... let' p = e ... }
the variables of pattern p are then *not* in scope in e.
Reasons for adding a non-recursive let:
1. recursive-let is the source for many non-termination bugs.
-1 from me. I don’t see that having non-recursive let available will have much impact on the bugs. It just changes forgetting to use different variable names because of recursion (which is currently uniform throughout the language) to forgetting to use non recursive let instead of let.
Sorry, but I cannot change history. Ideally, "let" was non-recursive, and we had a "let rec" to indicate recursion. I certainly am not going to propose to make "let" non-recursive. I am not buying your argument. I think it is easier to retrain the brain to use "let'" instead of "let" by default, because writing keywords is a background activity (like walking) and does not need the attention that thinking of the right variable needs. (My brain does confuse names, but not articles like "der" and "das".) Also, I want shadowing because then there are less variants of variables around that I can confuse. Shadowing is a way to clean out the name space, to dispose of things you do not need anymore. Cheers, Andresa -- Andreas Abel <>< Du bist der geliebte Mensch. Theoretical Computer Science, University of Munich Oettingenstr. 67, D-80538 Munich, GERMANY andreas.abel@ifi.lmu.de http://www2.tcs.ifi.lmu.de/~abel/