Hi Luke,<br><br>You&#39;re right.  My code had a typo.  Unfortunately, I still get the same error whichever way I do it.<br><br>For example:<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;    print (x xx)<br><br>and:<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>both give me:<br><br>test.lhs:8:22:<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>Any ideas?<br><br>$ ghc --version<br>The Glorious Glasgow Haskell Compilation System, version 6.10.3<br>
<br>Thanks,<br><br>-John<br><br><div class="gmail_quote">On Sat, Jun 6, 2009 at 6:41 PM, Luke Palmer <span dir="ltr">&lt;<a href="mailto:lrpalmer@gmail.com">lrpalmer@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="im">On Sat, Jun 6, 2009 at 1:48 AM, John Ky <span dir="ltr">&lt;<a href="mailto:newhoggy@gmail.com" target="_blank">newhoggy@gmail.com</a>&gt;</span> wrote:<br></div><div class="gmail_quote"><div class="im"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

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</blockquote></div><div><br>This is parsed as two arguments passed to the show function (which only takes one argument).<br>

<br>putStrLn $ show (x xx)<br><br>Or because putStrLn . show = print;<br><br>print $ x xx<br> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="im">
<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>
<br></div><div class="im">_______________________________________________<br>
Haskell-Cafe mailing list<br>
<a href="mailto:Haskell-Cafe@haskell.org" target="_blank">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>
<br></div></blockquote></div><br>
</blockquote></div><br>