<p dir="ltr">Ah! It seems that my wording was ambiguous. All I was trying to say is that there is nothing you can do with an IO action which will cause an otherwise pure expression to exhibit side effects during evaluation, *not* that an IO action is observable in pure code or that they are arbitrarily manipulable. </p>

<div class="gmail_quote">On Aug 8, 2013 9:39 AM, &quot;Jerzy Karczmarczuk&quot; &lt;<a href="mailto:jerzy.karczmarczuk@unicaen.fr">jerzy.karczmarczuk@unicaen.fr</a>&gt; wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

  
    
  
  <div bgcolor="#FFFFFF" text="#000000">
    I am sorry for having mixed-up arguments (but who throws the first
    stone?...)<br>
    <br>
    <blockquote type="cite">
      <pre>Jerzy seemed to suggest that the &quot;impurity&quot; 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  that you can do
      with, say, (printStr &quot;Ho!&quot; ) whatever you want. In fact, you can
      do almost nothing with it. You can transport it &quot;as such&quot;, 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 &quot;real&quot; operation on an action, i.e.
    (&gt;&gt;=)  produces side-effects... Other don&#39;t, but --<br>
    <br>
    Again, here my point is that calling &quot;pure&quot; an entity which is 
    opaque and inert, is meaningless (or &quot;redundant&quot; if you wish...),
    this was all.<br>
    <br>
    Jerzy K.<br>
    <br>
    PS. Tom Ellis:<br>
    <br>
    <blockquote type="cite">
      <pre>One could simply implement IO as a free monad</pre>
    </blockquote>
    Interesting. I wonder how.<br>
    <br>
  </div>

<br>_______________________________________________<br>
Haskell-Cafe mailing list<br>
<a href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br>
<a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br>
<br></blockquote></div>