<div>I don&#39;t understand why to call &quot;impure&quot; to the types instances of a class. Monad is simply a class with their methods. Even the &quot;pure&quot; list is a monad. The only difference between Monad and other classes is do notation, and only affects notation.</div>

<div> </div>
<div>The &quot;impure&quot; side is a type, not a class: IO.</div>