<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>

<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
</head>
<body bgcolor="#ffffff" text="#000000">
Dear Carter,<br>
<br>
Although I'm not an active Haskell programmer, I'd like to add my
support for you to write up your GSOC application.<br>
<br>
In the first five chapters of the book <i>Elements of Programming</i>
(Addison-Wesley, 2009), my coauthor Alex Stepanov and I undertook a
somewhat similar effort, only using C++ instead of Haskell. We started
with semigroups and monoids, and ended with rings and modules and a
careful treatment of GCD. <br>
<br>
C++ does not have a direct analog of the Haskell type class, so we
developed our own informal conventions for documenting the definitions
of concepts and the corresponding type requirements in function
templates and class templates.&nbsp; The concept definitions extracted from
the book are available here:<br>
<br>
&nbsp;&nbsp;&nbsp; <a class="moz-txt-link-freetext" href="http://www.elementsofprogramming.com/eop-concepts.pdf">http://www.elementsofprogramming.com/eop-concepts.pdf</a><br>
<br>
and the source code here:<br>
<br>
&nbsp;&nbsp;&nbsp; <a class="moz-txt-link-freetext" href="http://www.elementsofprogramming.com/code.html">http://www.elementsofprogramming.com/code.html</a><br>
<br>
I subsequently translated the concepts and functions from the first
(functional) half of our book into Haskell. It was a useful learning
exercise for me (giving me an appreciation for
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
Edward Kmett's comments on your proposal), and has led to fruitful
discussions with Henning Thielemann (see the Haskell Numerical Prelude
and <a class="moz-txt-link-freetext" href="http://www.haskell.org/haskellwiki/Mathematical_prelude_discussion">http://www.haskell.org/haskellwiki/Mathematical_prelude_discussion</a>)
and Jacques Carette (MathScheme, etc.).<br>
<br>
<br>
Paul McJones<br>
<br>
<br>
</body>
</html>