<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">

<head>

<meta name=Generator content="Microsoft Word 12 (filtered medium)">
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p
        {mso-style-priority:99;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page Section1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.Section1
        {page:Section1;}
-->
</style>
<!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext="edit">
  <o:idmap v:ext="edit" data="1" />
 </o:shapelayout></xml><![endif]-->
</head>

<body lang=EN-GB link=blue vlink=purple>

<div class=Section1>

<div style='border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm 4.0pt'>

<div>

<div>

<div>

<div>

<div style='border:none;border-left:solid windowtext 1.5pt;padding:0cm 0cm 0cm 4.0pt;
border-color:-moz-use-text-color -moz-use-text-color -moz-use-text-color blue'>

<div>

<div>

<p style='margin-bottom:12.0pt'>1) Where is the source code going to be hosted?
Here in Utrecht we currently have a repository with several (cabalized) generic
programming libraries, SYB included. But maybe SYB will stay in the same
repository as GHC?<o:p></o:p></p>

</div>

<p style='margin-bottom:12.0pt'><span style='font-size:11.0pt;color:#1F497D'>I
don't think it matters too much where it's hosted.&nbsp; For us it might be convenient
if it was on <a href="http://darcs.haskell.org" target="_blank">darcs.haskell.org</a>
because it reduces the number of ways in which you can get stuck.&nbsp; But
servers are fairly reliable so this probably isn't very important.</span><o:p></o:p></p>

</div>

</div>

</div>

</div>

<div>

<p class=MsoNormal><br>
We might prefer to keep it in an SVN repository where we have other generic
libraries, if that is not a big problem. If it is, it can always go to <a
href="http://darcs.haskell.org" target="_blank">darcs.haskell.org</a> anyway.<span
style='color:#1F497D'><o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>I think we would <b>very much</b> prefer NOT to use SVN.  We&#8217;re
already using darcs, and will shortly be using Git too.  To have SVN too is a
situation we&#8217;d like to avoid.  Darcs or Git please!  </span>&nbsp;<o:p></o:p></p>

</div>

<blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;
margin-left:4.8pt;margin-right:0cm'>

<div>

<div>

<div style='border:none;border-left:solid windowtext 1.5pt;padding:0cm 0cm 0cm 4.0pt;
border-color:-moz-use-text-color -moz-use-text-color -moz-use-text-color blue'>

<div>

<div>

<p style='margin-bottom:12.0pt'>3) How does the separation affect the automatic
instance deriving mechanism?<o:p></o:p></p>

</div>

<p style='margin-bottom:12.0pt'><span style='font-size:11.0pt;color:#1F497D'>It
think it'd make sense for the classes Data and Typable themselves to remain in
a &quot;core package&quot;, precisely because the deriving mechanism generates
code for them.&nbsp; If you change the method signatures, the code has to
change, for example.&nbsp; But all the library code layered on top can be in
the SYB package.</span><o:p></o:p></p>

</div>

</div>

</div>

</div>

</blockquote>

<div>

<p class=MsoNormal><br>
Ok, that makes sense. Only any changes to methods in Data would need to wait
for a new version of GHC. But those should be kept to a minimum, if any at all.
It's just a pity that so many methods are inside the Data class (like gmapQ and
friends). But then again, there is a reason for them to be there, and it's
probably not a good idea to change those anyway. Most development should
proceed by adding new things on top of the existing Data class core.<br>
<br>
What about instances of Data for the base types? Here I see a few
possibilities:<br>
1) No types have instances in core. Those could be in the SYB package, or the
user could use stand-alone deriving to get them (if that is possible).<br>
2) All types have instances in core, similar to the current
Data.Generics.Instances situation. This implies that the situation discussed in
[1] (inconvenient Data instances) will remain.<br>
3) Something between the previous two, such as the 'standard' Data instances
staying in core, and the others going to the SYB package (where they could be
thought over, or separated into another module which is not imported by
default).<span style='color:#1F497D'><o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>I suspect it&#8217;d be better to have all the instances in the SYB
package.  If there are data types whose instances are sufficiently simple and
unlikely to change that they can live in the same module as the Data class
itself, then we can do that, but otherwise just put them in the package.<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>S<o:p></o:p></span></p>

<p class=MsoNormal><br>
<br>
<br>
Pedro<br>
<br>
[1] <a href="http://www.haskell.org/pipermail/generics/2008-June/000347.html"
target="_blank">http://www.haskell.org/pipermail/generics/2008-June/000347.html</a><o:p></o:p></p>

</div>

</div>

</div>

</div>

</div>

</body>

</html>