Difference between Java, Scala, Haskell and Rust