Understanding embedded anonymous functions in Haskell?
<p>I'm trying to establish the best way to understand a series of embedded anonymous expressions such as: </p>

<pre><code>(\f -&gt; (\g -&gt; (\x -&gt; f (g x) ) ) )
</code></pre>

<p>In Haskell. I don't have too much trouble with simpler expressions such as: </p>

<pre><code>(\x -&gt; x + 1) 
</code></pre>

<p>Which states that the function takes a Number and returns a number: 
    <code>Num a =&gt; a -&gt; a</code></p>

<p>But when things are embedded like this I get quite lost. My attempt to understand it is that the anonymous function pipes the argument from <code>f</code> to <code>g</code> to <code>x</code> right away, where I should then begin writing the typing as it is where the variable is used. But I've tried rationalizing maybe four or five different explanations and I keep getting caught up on what looks like a recursive function call in the innermost function. </p>

<p>Can the typing of this problem be figured out in an easier manner? </p>