"Trying to do that without object-oriented features would be like trying to write a letter by holding the pen with my teeth"
I think what you're imagining here is Java without the OO bits. And that would be horrible!
What you should imagine is Haskell. That's more like typing a letter instead of hand-writing it, to overstretch your metaphor.
I've found that it's much easier to write much more elegant code in Haskell than it is in any OO language. Instead of writing a program without OO features, you're writing a program with advanced functional features. Rather than just being removed, the OO features are replaced.
I think what you're imagining here is Java without the OO bits. And that would be horrible!
What you should imagine is Haskell. That's more like typing a letter instead of hand-writing it, to overstretch your metaphor.
I've found that it's much easier to write much more elegant code in Haskell than it is in any OO language. Instead of writing a program without OO features, you're writing a program with advanced functional features. Rather than just being removed, the OO features are replaced.