Hi Haskell Cafe,<br><br>In the following code, I get an error saying Ambiguous occurrence `x&#39;.  Why can&#39;t Haskell work out which x to call based on the type of getA?<br><br>Thanks<br><br>-John<br><br>#!/usr/bin/env runhaskell<br>
<br>&gt; {-# LANGUAGE DisambiguateRecordFields #-}<br>&gt; import A<br>&gt; import B<br>&gt; <br>&gt; main = do<br>&gt;    let xx = getA<br>&gt;    putStrLn $ show x xx<br><br>----------------------<br><br>module A where<br>
<br>data TypeA = TypeA<br>   { a :: Int<br>   , x :: Int<br>   }<br><br>getA = TypeA { a = 1, x = 2 }<br><br>-------------------------<br><br>module B where<br><br>data TypeB = TypeB<br>   { b :: Int<br>   , x :: Int<br>   }<br>
<br>getB = TypeB { b = 1, x = 3 }<br><br>--------------------------<br><br>./test.lhs:8:21:<br>    Ambiguous occurrence `x&#39;<br>    It could refer to either `A.x&#39;, imported from A at ./test.lhs:3:2-9<br>                                      (defined at A.hs:5:5)<br>
                          or `B.x&#39;, imported from B at ./test.lhs:4:2-9<br>                                      (defined at B.hs:5:5)<br><br>