OCaml isn't pure and neither is F# iirc do you see a bit less monad heavy code in large codebases there?
What sort of situations would you want to give up a little purity or error handling at the type level? Maybe at a boundary where you can just write a very ugly imperative but quarantined section to give it a simpler type?