I don&#x27;t think the semantics are any more imperative than IO in Haskell, it&#x27;s just that there&#x27;s a different abstraction used for dealing with it.<p>Moreover, Tasks are absolutely monadic, with `andThen` being the bind operator. Elm just chooses to focus on the individual use-case, as opposed to focusing on the broader abstraction.