@debug: Monads are largely considered a requirement in Haskell and avoidable everywhere else. Dotty and F# are certainly doing fine moving away from them. The design smell to me is needing monad transformers to allow monads to compose, when monads were initially invented to improve composability.