Why don't imperative languages like C or Go support Haskell-like parametric polymorphism?
Question
Why don't imperative languages support parametric polymorphism as powerful as whats in Haskell and OCaml?
More specifically if I call a function foo(x)
that internally calls bar(x)
which internally calls baz(x)
, what prevents the type of parameter x
from being inferred all the way down?
Is it possible to design an imperative language (like C or Go) with this behavior or must the language be functional?
Question: Does there exist a type system allowing for parametric polymorphism as powerful as Hindley-Milner, but suited for imperative languages and not functional languages. If such a type system exists what are it's advantages and disadvantages? I'm wondering if it can be done rather than why it hasn't been done.
No correct solution