I'm interested if Scala's OOP hybridity leads to better readable code on a high level of abstraction than for example Haskell? Or do you mainly avoid the OOP features of the language?
I tend to avoid writing Scala code with lots of OOP patterns, because it really adds complexity for things you don't need to. The "Functional Way" wins every time in terms of readability and simplicity, when you are accustomed to this logic.
I would say, you can try at the beginning if it's easier for you to translate from OOP language with OOP concepts to FP, but eventually you'll end avoiding that.
If you are looking for a way to organize your code, I'll suggest to experiment with OCaml modules. I found them very clean.
In my own (very limited!) experience, Scala code is way harder to read than Haskell's. Even type signatures of Scala functions are harder to understand, and more verbose. Scala brings OOP to the table, but I wouldn't say this makes it a "higher level of abstraction" either. It does make it more complex, though.
If it's the right solution then an experienced Haskell developer will congratulate you. If it's the wrong solution they'll point you towards a functional solution which likely works better with the language/paradigm.
> That is, until you actually do it; I don't think I ever saw people complaining about any actual instance of OOP-like code, just about the idea.
Sometimes there is something to complain about ;)
I remember listening to a Haskell Cast with Michael Snoyman and/or Gabriel Gonzalez of the Conduit and Pipes fame... whoever it was mentioned that their early designs were very imperative because they thought it was necessary for performance.
However over time a functional API/core emerged and was more stable and performant.