I forgot to cc the message below to haskell-cafe... <br><br><div class="gmail_quote">---------- Forwarded message ----------<br>From: <b class="gmail_sendername">Carlos Camarao</b> <span dir="ltr">&lt;<a href="mailto:carlos.camarao@gmail.com">carlos.camarao@gmail.com</a>&gt;</span><br>
Date: Thu, Jun 10, 2010 at 4:40 PM<br>Subject: Re: [Haskell-cafe] Proposal to solve Haskell&#39;s MPTC dilemma<br>To: &quot;Brandon S. Allbery KF8NH&quot; &lt;<a href="mailto:allbery@ece.cmu.edu">allbery@ece.cmu.edu</a>&gt;<br>
<br><br><div><div></div><div class="h5"><div class="gmail_quote">On Wed, Jun 9, 2010 at 1:51 AM, Brandon S. Allbery KF8NH <span dir="ltr">&lt;<a href="mailto:allbery@ece.cmu.edu" target="_blank">allbery@ece.cmu.edu</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 style="word-wrap: break-word;"><div><div><div>On Jun 8, 2010, at 15:32 , Job Vranish wrote:</div><blockquote type="cite">It seems like this would make working with MPTCs much easier.<br>When programming, I generally want to only specify the minimum amount of information to make my code logically unambiguous.<br>

 If the code contains enough information to infer the proper instantiation without the use of an FD, then I shouldn&#39;t need to add a FD.<br>It seems like this would have much more of a &quot;it just works&quot; feel than the currently alternatives.<br>

</blockquote><div><br></div></div><div>I can&#39;t help but think that the &quot;it just works&quot; mentality leads to duck typing.</div></div><br><div> <span style="border-collapse: separate; border-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 11px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"><div style="word-wrap: break-word;">

<span style="border-collapse: separate; border-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 11px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"><span style="border-collapse: separate; border-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 11px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"><div>

<font face="Monaco"><span style="font-family: Monaco;"><span style="font-family: Monaco;">-- </span></span></font></div><div><font face="Monaco"><span style="font-family: Monaco;"><span style="font-family: Monaco;">brandon s. allbery [solaris,freebsd,perl,pugs,haskell] <a href="mailto:allbery@kf8nh.com" target="_blank">allbery@kf8nh.com</a></span></span></font></div>

<div><font face="Monaco"><span style="font-family: Monaco;"><span style="font-family: Monaco;">system administrator [openafs,heimdal,too many hats] <a href="mailto:allbery@ece.cmu.edu" target="_blank">allbery@ece.cmu.edu</a></span></span></font></div>

<div><font face="Monaco"><span style="font-family: Monaco;"><span style="font-family: Monaco;">electrical and computer engineering, carnegie mellon university    KF8NH</span></span></font></div><span style="border-collapse: separate; border-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 11px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"><br>

</span></span></span></div></span> </div></div></blockquote><div> </div></div></div></div>Perhaps I am missing something, but if we have, say,<br> <br>  quack o::IO() (or in_the_forest o:: IO(),<br>                           or, say, f o:: Bool (<a href="http://en.wikipedia.org/wiki/Duck_typing" target="_blank">en.wikipedia.org/wiki/Duck_typing</a>))<br>

<br>then: &quot;o&quot; can be a duck, or a dragon, that quacks, but there is no<br>dynamic binding: o&#39;s type must be the only type with a function quack in this context<br>(it cannot be both duck and dragon in this context, one being chosen<br>

dynamically according to the value of &quot;o&quot;).<br><br>This avoids the problem of calling quack for an incorrect value <br>(there can be no dragons into a pond, trying to impersonate a duck).<br><br>Cheers,<br><font color="#888888">
<br>Carlos<br><br>
</font></div><br>