thanks for the explanations! I guess it&#39;s clear now<br><br><div class="gmail_quote">On Sat, Feb 4, 2012 at 3:02 PM, Chaddaï Fouché <span dir="ltr">&lt;<a href="mailto:chaddai.fouche@gmail.com">chaddai.fouche@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">On Sat, Feb 4, 2012 at 12:05 PM, David McBride &lt;<a href="mailto:toad3k@gmail.com">toad3k@gmail.com</a>&gt; wrote:<br>

&gt; When you pass an argument to<br>
&gt; readDir = findRegularFiles &gt;&gt;= readFiles<br>
&gt;<br>
&gt; it expands to<br>
&gt; readDir arg = (findRegularFiles &gt;&gt;= readFiles) arg<br>
&gt;<br>
&gt; which fails because that expression takes no argument, only<br>
&gt; findRegularFiles does.  Honestly I can&#39;t think of any way to get that<br>
&gt; argument in there without explicitly naming it.<br>
<br>
</div>I would say the problem is even before that, the expression<br>
&quot;findRegularFiles &gt;&gt;= readFiles&quot; is not well typed :<br>
<div class="im"><br>
(&gt;&gt;=) :: Monad m =&gt; m a -&gt; (a -&gt; m b) -&gt; m b<br>
</div>specialized here in :<br>
(&gt;&gt;=) :: IO a -&gt; (a -&gt; IO b) -&gt; IO b<br>
<br>
but :<br>
<br>
findRegularFiles :: FilePath -&gt; IO [FilePath]<br>
<br>
so findRegularFiles is not of type &quot;IO a&quot;, so can&#39;t be the first<br>
argument of (&gt;&gt;=) (or the second of (=&lt;&lt;) since that&#39;s just the<br>
flipped version).<br>
<br>
But there is a solution ! What you&#39;re searching here is a function of type :<br>
? :: Monad m =&gt; (a -&gt; m b) -&gt; (b -&gt; m c) -&gt; (a -&gt; m c)<br>
<br>
A kind of monadic composition, there is an operator for that in<br>
Control.Monad since ghc 6.12 or even before :<br>
<br>
(&gt;=&gt;) :: Monad m =&gt; (a -&gt; m b) -&gt; (b -&gt; m c) -&gt; (a -&gt; m c)<br>
<br>
so :<br>
<div class="im"><br>
&gt; readDir = findRegularFiles &gt;=&gt; readFiles<br>
<br>
</div>or<br>
<div class="im"><br>
&gt; readDir = readFiles &lt;=&lt; findRegularFiles<br>
<br>
</div>will work :)<br>
<font color="#888888"><br>
--<br>
Jedaï<br>
</font></blockquote></div><br>