4 ms·
I guess shadowing produces warnings instead of errors is because sometimes it can be a good thing: you can use it to create the illusion of mutability. In GHC's
by quchen 13y ago
I guess shadowing produces warnings instead of errors is because sometimes it can be a good thing: you can use it to create the illusion of mutability. In GHC's source I've seen a couple of longer functions (say ~50 lines) that re-use names in let/bind "statements" to get around going from x to x'''; the "x" simply kept shadowing its previous value.
- judk 13y agoNot just prettier, but it is more correct to shadow if your intent is to make the original x unavailable. It would be cleaner/safer if the language had a keyword like 'shadowlet'.
- velis_vel 13y agoI've also done stuff like x <- m1; f x; x <- m 2; f x; in a do-block, and it's not clear to me how to write 'shadowfrom' (or however you pronounce '<-' in that context).
- judk 13y agoMaybe this would be cool: x! <- m 2 Sort of like a strictness annotation. In think it would be a compatible language change, since only identifiers can currently appear left of a <-