run :: Monad IO a -&gt; IO a<br><br>Actually this type is wrong. Monad has to appear as a class constraint, for instance :<br><br>run :: Monad m =&gt; m a -&gt; IO a<br><br>Are you trying to make:<br><br>run :: IO a -&gt; IO a<br>

??<br><br><div class="gmail_quote">2012/5/4 Magicloud Magiclouds <span dir="ltr">&lt;<a href="mailto:magicloud.magiclouds@gmail.com" target="_blank">magicloud.magiclouds@gmail.com</a>&gt;</span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

Hi,<br>
 &nbsp;Assuming this:<br>
run :: Monad IO a -&gt; IO a<br>
data Test = Test { f }<br>
<br>
 &nbsp;Here I&#39;d like to set f to run, like &quot;Test run&quot;. Then what is the type of f?<br>
 &nbsp;The confusing (me) part is that, the argument pass to f is not fixed<br>
on return type, like &quot;f1 :: Monad IO ()&quot;, &quot;f2 :: Monad IO Int&quot;. So<br>
&quot;data Test a = Test { f :: Monad IO a -&gt; IO a} does not work.<br>
<span class="HOEnZb"><font color="#888888">--<br>
竹密岂妨流水过<br>
山高哪阻野云飞<br>
<br>
And for G+, please use magiclouds#<a href="http://gmail.com" target="_blank">gmail.com</a>.<br>
<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>
</font></span></blockquote></div><br>