> GHC's Dynamic type can only contain monomorphic values, it can't handle polymorphic stuff.
Sort of. If you wrap a polymorphic type inside a monomorphic one then it can handle it fine, for example
data Mono = Mono (forall a b. a -> b -> a)
(But perhaps you know this)I did not mention GHC's Dynamic type. I mentioned GHC's deferred-type errors as an alternative technique to "gradual typing". I believe there were plans to implement a polymorphic version of Dynamic, but it obviously wasn't a high priority. Note that GHC does not require any special type-system extensions to support Dynamic.
GHC also considers Dynamic->Dynamic and Int->Int to be incompatible types, which is not quite what one would want in a gradualy typed setting.
Haskell also sidesteps the difficulties that come with mutability in a gradualyly typed setting.