<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    I am sorry for having mixed-up arguments (but who throws the first
    stone?...)<br>
    <br>
    <blockquote type="cite">
      <pre wrap="">Jerzy seemed to suggest that the "impurity" of IO was somehow related to it
not supporting very many operations.</pre>
    </blockquote>
    No, not really. I added <br>
    <br>
    <blockquote type="cite"> First, it is not true&nbsp; that you can do
      with, say, (printStr "Ho!" ) whatever you want. In fact, you can
      do almost nothing with it. You can transport it "as such", and you
      can use it as the argument of (&gt;&gt;=). </blockquote>
    <br>
    after the message of Jake McA.<br>
    <br>
    <blockquote type="cite"><i>You can do whatever you want with them</i>
      with no harmful effects in any Haskell expression. </blockquote>
    <br>
    This was an additional layer of bikeshedding, not exactly about
    purity.<br>
    Or, just a bit: the ONLY "real" operation on an action, i.e.
    (&gt;&gt;=)&nbsp; produces side-effects... Other don't, but --<br>
    <br>
    Again, here my point is that calling "pure" an entity which is&nbsp;
    opaque and inert, is meaningless (or "redundant" if you wish...),
    this was all.<br>
    <br>
    Jerzy K.<br>
    <br>
    PS. Tom Ellis:<br>
    <br>
    <blockquote type="cite">
      <pre wrap="">One could simply implement IO as a free monad</pre>
    </blockquote>
    Interesting. I wonder how.<br>
    <br>
  </body>
</html>