I think Julia is kind of simple in the sense that it has this idea that every function you write is automatically generic and the compiler infers the generic bounds by looking at the function implementation. A typed language that does something similar imperfectly is fsharps, but it does not work too well in practice