OCaml is the only thing I know that can be mandatory / object oriented, statically typed, garbage collection and support for global type inference and structural typing, although this is essentially a functional language.
Scala is not a functional language, such as OCaml, but a required / object-oriented language that supports structural typing but does not have the type of output type you are looking for . However, it still supports functional constructs.
If "non-functional" you mean a language that does not support functional programming at all, then I do not think that it exists.
source share