<br><br><div class="gmail_quote">2012/1/8 Gábor Lehel <span dir="ltr">&lt;<a href="mailto:illissius@gmail.com">illissius@gmail.com</a>&gt;</span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
2012/1/8 Ingo Wechsung &lt;<a href="mailto:ingo.wechsung@googlemail.com">ingo.wechsung@googlemail.com</a>&gt;:<br>
<div><div class="h5">&gt;<br>
&gt;<br>
&gt; 2012/1/8 Gábor Lehel &lt;<a href="mailto:illissius@gmail.com">illissius@gmail.com</a>&gt;<br>
&gt;<br>
&gt;&gt;<br>
&gt;&gt; The second is that only the author of the datatype could put functions<br>
&gt;&gt; into its namespace; the &#39;data.foo&#39; notation would only be available<br>
&gt;&gt; for functions written by the datatype&#39;s author, while for every other<br>
&gt;&gt; function you would have to use &#39;foo data&#39;. I dislike this special<br>
&gt;&gt; treatment in OO languages and I dislike it here.<br>
&gt;<br>
&gt;<br>
&gt; Please allow me to clarify as far as Frege is concerned.<br>
&gt; In Frege, this is not so, because implementations of class functions in an<br>
&gt; instance will be linked back to the  instantiated types name space. Hence<br>
&gt; one could do the following:<br>
&gt;<br>
&gt; module RExtension where<br>
&gt;<br>
&gt; import original.M(R)    -- access the R record defined in module original.M<br>
&gt;<br>
&gt; class Rextension1 r where<br>
&gt;       firstNewFunction :: .....<br>
&gt;       secondNewFunction :: .....<br>
&gt;<br>
&gt; instance Rextension1 R where<br>
&gt;      -- implementation for new functions<br>
&gt;<br>
&gt; And now, in another module one could<br>
&gt;<br>
&gt; import RExtension()      -- equivalent to qualified import in Haskell<br>
&gt;<br>
&gt; and, voilá, the new functions are accessible (only) through R<br>
<br>
</div></div>Ah, I see. And that answers my other question as well about why you<br>
would special case class methods like this. Thanks. I think I prefer<br>
Disciple&#39;s approach of introducing a new keyword alongside &#39;class&#39; to<br>
distinguish &#39;virtual record fields&#39; (which get put in the namespace)<br>
from any old class methods (which don&#39;t). Otherwise the two ideas seem<br>
very similar. (While at the same time I still dislike the<br>
wrong-direction aspect of both.)<br></blockquote><div><br></div><div>Yes, I can see your point here. OTOH, with the x.y.z notation the number of parentheses needed can be reduced drastically at times. </div><div>In the end it&#39;s maybe a matter of taste. Frege started as a pure hobby project (inspired by Simon Peyton-Jones&#39; paper &quot;Practical type inference for higher ranked types&quot;), but later I thought it may be interesting for OO programmers (especially Java) because of the low entry cost (just download a JAR, stay on JVM, etc.), and hence some aspects are designed so as to make them feel at home. Ironically, it turned out that the most interest is in the FP  camp, while feedback from the Java camp is almost 0. Never mind!</div>
<div><br></div></div>-- <br>Mit freundlichen Grüßen<br>Ingo<br>