Code unexpectedly accepted by GHC/GHCi : <p>I don't understand why this code should pass type-checking:</p>

<pre><code>foo :: (Maybe a, Maybe b)
foo = let x = Nothing in (x,x)
</code></pre>

<p>Since each component is bound to the same variable <code>x</code>, I would expect that the most general type for this expression to be <code>(Maybe a, Maybe a)</code>.  I get the same results if I use a <code>where</code> instead of a <code>let</code>.  Am I missing something?</p>
