I agree with you both that it would be amazing to see this in Haskell, and that Java (which I'm using full time now, after years of rails) is close-ish to what you want. I think this is what Scala is supposed to be, but I'm not sure it has realized that potential. You should look into Kotlin - you'll still miss Haskell's type system, but it's a good bit nicer than Java, and has a lot less history.