An object-oriented programming language that thinks functionally