Also in my weblog:&nbsp; <a href="http://haskell-web.blogspot.com/2008/10/axioms-properties-for-haskell-classes.html">http://haskell-web.blogspot.com/2008/10/axioms-properties-for-haskell-classes.html</a><br><br><div class="gmail_quote">
2008/10/23 Alberto G. Corona <span dir="ltr">&lt;<a href="mailto:agocorona@gmail.com">agocorona@gmail.com</a>&gt;</span><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
It seems that some of the goals are not so hard. here I publised my progress.&nbsp; <br><br><a href="http://docs.google.com/Doc?id=dd5rm7qq_165rshp74gf&amp;pli=1" target="_blank">http://docs.google.com/Doc?id=dd5rm7qq_165rshp74gf&amp;pli=1</a><br>

<br>I show how to define a Ring, such a&nbsp; mathematical structure in Haskell, how to instantiate the class Num as a Ring , how to (possibly in other moment of space-time) instantiate a new class as Num and how to test the axioms for the new class.<br>

<br>All of then is something like a sophisticated &quot;assert&quot; mechanism, but , I think, much more flexible and elegant.<br><br><div class="gmail_quote">2008/10/22 Alberto G. Corona <span dir="ltr">&lt;<a href="mailto:agocorona@gmail.com" target="_blank">agocorona@gmail.com</a>&gt;</span><div>
<div></div><div class="Wj3C7c"><br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">I guess that the namespace thing is not necesary. Maybe it can be done in template haskell. I never used TH however. it is a matter of inserting code here and there and rewrite rules somewhere at compile time.&nbsp;&nbsp; Its a nice project.&nbsp; Ill try.<div>

<div></div><div><br>
<br>
<div class="gmail_quote">2008/10/22 Mitchell, Neil <span dir="ltr">&lt;<a href="mailto:neil.mitchell.2@credit-suisse.com" target="_blank">neil.mitchell.2@credit-suisse.com</a>&gt;</span><br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0px 0px 0px 0.8ex; padding-left: 1ex;">
<div>
<div dir="ltr" align="left"><font color="#0000ff" face="Arial" size="2"><span>Hi Alberta,</span></font></div>
<div dir="ltr" align="left"><font color="#0000ff" face="Arial" size="2"><span></span></font>&nbsp;</div>
<div dir="ltr" align="left"><font color="#0000ff" face="Arial" size="2"><span>It&#39;s a lot of work, but I wish you luck :-)&nbsp; Many of the underlying tools exist, but there definately needs more integration.</span></font></div>



<div>
<div dir="ltr" align="left"><font color="#0000ff" face="Arial" size="2"><span></span></font>&nbsp;</div>
<div dir="ltr" align="left"><font color="#0000ff" face="Arial" size="2"><span>Thanks</span></font></div>
<div dir="ltr" align="left"><font color="#0000ff" face="Arial" size="2"><span></span></font>&nbsp;</div>
<div dir="ltr" align="left"><font color="#0000ff" face="Arial" size="2"><span>Neil</span></font></div>
<div>&nbsp;</div>
<p><font face="Times New Roman" size="2">This material is sales and trading commentary and does not constitute investment research. Please follow the attached hyperlink to an important disclaimer</font> <br><u><font color="#0000ff" face="Times New Roman" size="2">&lt;<a>www.credit-suisse.com/emea/legal</a>&gt;</font></u> </p>



<div>&nbsp;</div><br></div>
<blockquote style="border-left: 2px solid rgb(0, 0, 255); padding-left: 5px; margin-left: 5px; margin-right: 0px;">
<div dir="ltr" align="left" lang="en-us">
<hr>
<font face="Tahoma" size="2"><b>From:</b> Alberto G. Corona [mailto:<a href="mailto:agocorona@gmail.com" target="_blank">agocorona@gmail.com</a>] <br><b>Sent:</b> 22 October 2008 4:23 pm<br><b>To:</b> Mitchell, Neil<br><b>Subject:</b> Re: [Haskell-cafe] Fwd: enhancing type classes with properties<br>


</font><br></div>
<div>
<div></div>
<div>
<div></div>
<div>Hi Neil,</div>
<div>&nbsp;</div>
<div>I see the contract type&nbsp;mechanism&nbsp; and safety check techniques reflected in the above paper&nbsp;are a good step, But I think that something more general&nbsp;would be&nbsp;better. What I propose is to integrate directly in the language some concepts and developments that are already well know &nbsp;to solve&nbsp; some common needs that&nbsp;I thing can not be solved without this integration:</div>



<div>&nbsp;</div>
<div>To make use of:</div>
<div>&nbsp;</div>
<div>&nbsp;&nbsp; -Quickcheck style validation. By the way, Don Steward&nbsp;recommend to add quckcheck rules close to the class definitions just for better documentation&nbsp;</div>
<div><br>&nbsp;&nbsp; - Implicit class properties defined everywhere in the documentation but impossible to reflect in the code (for example the famous monad rules: return x &gt;&gt;= f == f x etc&nbsp;)</div>
<div>&nbsp;</div>
<div>&nbsp;- The superb ghc rewrite rule mechanism (perhaps with enhancements)</div>
<div>&nbsp;</div>
<div>&nbsp;- object style namespaces, depending on class names.</div>
<div>&nbsp;</div>
<div>To solve problems like</div>
<div>&nbsp;</div>
<div>&nbsp;- code optimization</div>
<div>&nbsp;</div>
<div>&nbsp;- code verification.&nbsp; regression tests for free!!</div>
<div>&nbsp;</div>
<div>&nbsp; - The need for safe overloading of methods and operators (making the namespaces dependent not only on module name &nbsp;but also in class names) . Why I can not overload the&nbsp; operator + &nbsp;in the context of a DSL for JavaScript&nbsp;&nbsp;generation if&nbsp;my operator&nbsp;does what + does?</div>



<div>&nbsp;</div>
<div>&nbsp;-&nbsp; strict and meaningful&nbsp;rules for class instances.<br></div>
<div>&nbsp;-&nbsp; to make the rewrite rule mechanism visible to everyone</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div class="gmail_quote">2008/10/22 Mitchell, Neil <span dir="ltr">&lt;<a href="mailto:neil.mitchell.2@credit-suisse.com" target="_blank">neil.mitchell.2@credit-suisse.com</a>&gt;</span><br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0px 0px 0px 0.8ex; padding-left: 1ex;">
<div>
<div dir="ltr" align="left"><span><font color="#0000ff" face="Arial" size="2">Hi Alberto,</font></span></div>
<div dir="ltr" align="left"><span><font color="#0000ff" face="Arial" size="2"></font></span>&nbsp;</div>
<div dir="ltr" align="left"><span><font color="#0000ff" face="Arial" size="2">Take a look at ESC/Haskell and Sound Haskell, which provide mechanisms for doing some of the things you want. I don&#39;t think they integrate with type classes in the way you mention, but I think that is just a question of syntax.</font></span></div>



<div dir="ltr" align="left"><span><font color="#0000ff" face="Arial" size="2"></font></span>&nbsp;</div>
<div dir="ltr" align="left"><span><font color="#0000ff" face="Arial" size="2"><a href="http://www.cl.cam.ac.uk/%7Enx200/" target="_blank">http://www.cl.cam.ac.uk/~nx200/</a></font></span></div>
<div dir="ltr" align="left"><span><font color="#0000ff" face="Arial" size="2"></font></span>&nbsp;</div>
<div dir="ltr" align="left"><span><font color="#0000ff" face="Arial" size="2">Thanks</font></span></div>
<div dir="ltr" align="left"><span><font color="#0000ff" face="Arial" size="2"></font></span>&nbsp;</div>
<div dir="ltr" align="left"><span><font color="#0000ff" face="Arial" size="2">Neil</font></span></div>
<div>&nbsp;</div>
<p><font face="Times New Roman" size="2">This material is sales and trading commentary and does not constitute investment research. Please follow the attached hyperlink to an important disclaimer</font> <br><u><font color="#0000ff" face="Times New Roman" size="2">&lt;<a>www.credit-suisse.com/emea/legal</a>&gt;</font></u> </p>



<div>&nbsp;</div><br>
<blockquote style="border-left: 2px solid rgb(0, 0, 255); padding-left: 5px; margin-left: 5px; margin-right: 0px;">
<div dir="ltr" align="left" lang="en-us">
<hr>
<font face="Tahoma" size="2"><b>From:</b> <a href="mailto:haskell-cafe-bounces@haskell.org" target="_blank">haskell-cafe-bounces@haskell.org</a> [mailto:<a href="mailto:haskell-cafe-bounces@haskell.org" target="_blank">haskell-cafe-bounces@haskell.org</a>] <b>On Behalf Of </b>Alberto G. Corona <br>


<b>Sent:</b> 22 October 2008 1:43 pm<br><b>To:</b> <a href="mailto:haskell-cafe@haskell.org" target="_blank">haskell-cafe@haskell.org</a><br><b>Subject:</b> [Haskell-cafe] Fwd: enhancing type classes with properties<br></font><br>


</div>
<div>
<div></div>
<div>
<div></div>Im just thinking aloud, but, because incorporating deeper mathematics concepts has proven to be the best solution for better and more flexible programming languages with fewer errors, I wonder if raising the type classes incorporating axioms can solve additional problems.&nbsp; <br>


<br>At first sight it does:<br>
<div class="gmail_quote"><br><br>class Abelian a&nbsp; where<br>&nbsp;&nbsp;&nbsp; (+) :: a -&gt; a -&gt; a<br>&nbsp; &nbsp; property ((+))= a+b == b+a<br><br><br><br>this permits:<br>&nbsp;&nbsp; 1- safer polimorphism:&nbsp;&nbsp; I can safely reuse the operator + if the type and the property is obeyed. The lack of ability to redefine operators is a problem for DSLs that must use wreid symbols combinations with unknow meanings. To use common operators with fixed properties is very good. the same aplies for method names.<br>


<br>&nbsp;&nbsp; 2- the compiler can use the axions as rewrite rules. <br><br>&nbsp; 3- in debugging mode, it is possible to verify the axiom for each&nbsp; value a generated during execution. Thus, a generator&nbsp; is not needed&nbsp; like in quickcheck. The logic to quickcheck can be incorporated in the debugging executable. <br>


<br>3 guaranties&nbsp; that 1 and 2 are safe.<br><br><br><br><br>&nbsp; <br>a type class can express a relation between types,&nbsp; but it is not possible to define relation between relations.<br></div><br></div></div></blockquote>
<p></p><pre>==============================================================================
Please access the attached hyperlink for an important electronic communications disclaimer: 

<a href="http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html" target="_blank">http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html</a>
==============================================================================
</pre>
<p></p>
<p></p>
<p></p></div></blockquote></div><br></div></div></blockquote>
<div>
<div></div>
<div>
<p></p><pre>==============================================================================
Please access the attached hyperlink for an important electronic communications disclaimer: 

<a href="http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html" target="_blank">http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html</a>
==============================================================================
</pre>
<p></p></div></div></div></blockquote></div><br>
</div></div></blockquote></div></div></div><br>
</blockquote></div><br>