я не очень разделяю, компилятор конечно отличный, но мысли он читать не умеет. а взаимно-рекурсивные связывания в let очень удобные. я когда по нужде писал на F# каждый раз чертыхался.
так это же хорошо, когда семантика простая и очевидная. Как минимум удобно иметь такую возможность, а не глазами выискивать из какого скоупа у нас переменная. Упомянутый -Wshadow хорош, но в жизжни порой варнингов полно, можно не отследить.