>>28
Static typing introduces a lot of complexity: inference, type classes, algebraic data types, existential types, phantom types, etc. That's a lot of buzzwords to even start writing code, and static typing has nothing to do with functional paradigm. While dynamic typing doesn't catch type mismatch problems before accepting to compile your program, it's very simple to use and has a very low mental requirement - ideal for doing something other than type systems research. The error messages given at run-time on type errors are much simpler than cryptic compile-time error messages.
Statically typed languages have a very painful syntax, it's a far more complex one than Lisp's. You need to be wary of operator precedence, layout rules and other syntactic sugars, which can be a stumbling block when using the language. Scheme has the simplest syntax of any other practical programming language. The rules can be explained in minutes. The syntax is unlike what most people are used to, especially if they come from a C-syntax background, but it’s easy to pick up and use.
Inspired by mathematics, some statically typed languages use lazy evaluation, meaning it is harder to understand when something will happen or write efficient software. Lisp has intuitive eager evaluation, which is what most human beings are used to.
The "REPL" of statically typed languages does not expose the entire language, it is very limited: you can't modify every aspect of your program as you would in Lisp, so it impedes testing things interactively in GHCi. Statically typed languages also can't efficiently load code at run-time, meaning you can't use statically typed languages for CLI or scripting as you can use Lisp in interpreter mode.
There are no easily accessible, SICP-like, books for statically typed languages. Some of the newbie-oriented books (like TAPL) are actually quite daunting, making it hard to suggest reading material to somebody who has no background in mathematics.