One thing that does make it kind of weird is that a lot of statically typed languages that aren't from the ML family have a grammar top level that isn't imperative. In C#, Java, Dart, etc. The top level of a source file is purely declarative.
That can make a REPL sort of semantically weird. Do you allow variable declarations? If so, are they local or global? Do you allow class declarations in them? If so, can they access previous declarations?
All of that's easier in a dynamically typed language where the top level of a program is more or less just regular imperative code.
It's not insurmountable though, because you can be a little hand-wavey about semantics in a REPL if needed.