<br><br><div class="gmail_quote">On Fri, Jun 5, 2009 at 8:05 PM, Martijn van Steenbergen <span dir="ltr">&lt;<a href="mailto:martijn@van.steenbergen.nl">martijn@van.steenbergen.nl</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;">
Hi John,<div class="im"><br>
<br>
John Ky wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
 &gt;  full = do<br>
 &gt;     let myOrder = init -- [1]<br>
 &gt;              { item = Just init<br>
 &gt;                 { itemId = &quot;Something&quot;<br>
 &gt;                 }<br>
 &gt;              , operation = Just Buy<br>
 &gt;              }<br>
 &gt;     putStrLn $ show myOrder<br>
 &gt;     return ()<br>
<br>
Where initOrder and initItem are both replaced with just &#39;init&#39; and the compiler works out from the context (ie. the type of the field) what the types are supposed to be and therefore the actual init function to call?<br>

</blockquote>
<br></div>
Sure! This is one of the simplest forms of overloading. Here&#39;s a small example:<br>
<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
data Circle = Circle { center :: (Float, Float), radius :: Float }<br>
data WrapCircle = WrapCircle { circle :: Circle }<br>
<br>
class Ini a where<br>
  ini :: a<br>
<br>
instance Ini Circle where<br>
  ini = Circle { center = (0, 0), radius = 1 }<br>
<br>
exampleCircle :: WrapCircle<br>
exampleCircle = WrapCircle { circle = ini { radius = 2 } }<br>
</blockquote>
<br>
Hope this helps!<br><font color="#888888">
<br>
Martijn.<br>
</font></blockquote></div><br>