To me shadowing of existing values like described in:
Shadowing and Nested function
immutable in F#
f# duplicate definition
FSharp for fun and profit comment
seems to be going against the notion of immutability and type safety that makes F# so strong. Shadowing in F# works different than in C#. It just took me quite some time to find out that a bug in my code was due to unintentional shadowing of a name within the same scope. Is there a way to have compiler warnings for shadowing values in VS?
I know that in some cases it can be useful. for example for Checked Aritmetics .