When a programmer is forced to think about a type before he already decided what it could be is a limiting factor. All scripting languages are based on this idea.
And, of course, having lists of elements of just the same type and different sets of functions for different types of, say, lists is an ugly thing.
The current mass-hysteria about necessity of static typing is due some sort of Bandwagon effect.
I think it is much better to learn the elegant approach of authors of Scheme and other Lisps to hide necessary hardware types inside a runtime and to allow programmers and themselves to think in terms of a problem domain.
So, statically typed Lisp is something like four-wheel bicycle. It is very "safe" and "stable" but for some reasons no one wants it.