Haskell is a purely-functional, lazy-by-default, statically-typed, type-inferred programming language
In contrast, Scala is an impure, strict-by-default, statically-typed, (somewhat) type-inferred, (somewhat) functional programming language
Java (C, C++, C#, Python, Ruby, Groovy, etc.) is an impure, strict-by-force, (somewhat -- ok not really) statically-typed, (emphatically) imperative programming language