&gt; It also has impure parts (provided by monads).<p>Since we&#x27;re going for precision, I note that monads have nothing to do with impurity (<a href="https:&#x2F;&#x2F;wiki.haskell.org&#x2F;What_a_Monad_is_not#Monads_are_not_impure" rel="nofollow">https:&#x2F;&#x2F;wiki.haskell.org&#x2F;What_a_Monad_is_not#Monads_are_not_...</a>).  It just happens that IO, in which the impurity lives, is a monad.  It is also a functor (in the category-theory, not Prolog or C++, sense), but that doesn&#x27;t make functors impure, and it doesn&#x27;t make monads impure (or impurity inherently monadic:  <a href="https:&#x2F;&#x2F;wiki.haskell.org&#x2F;What_a_Monad_is_not#Haskell_doesn.27t_need_Monads" rel="nofollow">https:&#x2F;&#x2F;wiki.haskell.org&#x2F;What_a_Monad_is_not#Haskell_doesn.2...</a>).