“most people agree that straight-forward composition does not actually occur that often”
Maybe because there is no syntax for it, so people are tired of having to define
this function and hence use it less.
Don’t forget that the syntax of the language may influence the style of programmers.
Monads are also rare in OCaml code. Why? Maybe because there is no syntax support for them out_of_the_box_and_without_mangling_with_the_build_system and hence programmers are influenced to not use them.
I just know Lwt and Async as OCaml code bases that have and use monads.
I’ve done some Haskell in the past. I was amazed by the high level code I saw.
There were monads everywhere and using the composition operator was a real pleasure.