Hi Robin,<br><br><div class="gmail_quote">On Fri, Mar 27, 2009 at 16:13, Robin Green wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

Suppose you have the requirement that a certain feature of your<br>
software be disable-able at compile time, to avoid having to pull in<br>
certain dependencies (which may not be available on all platforms).<br>
Disabling a feature may entail removing certain fields from certain<br>
constructors (again, to avoid pulling in certain dependencies), and/or<br>
removing certain functions from certain modules. What is the best way to<br>
do this in Haskell?<br>
</blockquote><div><br>I don&#39;t know, but...<br><br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">This problem description suggests that perhaps insights from<br>


Aspect-Oriented Programming and/or Software Product Lines may be<br>
relevant. However, I haven&#39;t heard of much work that relates these<br>
concepts to Haskell. Maybe this would be a good topic for an<br>
enterprising student?<font color="#888888"><br></font></blockquote></div><br>I would love to see Haskell SPLs developed with feature-oriented
programming concepts [1,2]. Only it would be much better if compositions were
type-safe.<br><br>I don&#39;t want aspects as they are presented in AspectJ (i.e. dynamic, hazardous). But everybody has their own definition of aspect these days.<br><br>Regards,<br>Sean<br>
<br>
[1] <a href="http://en.wikipedia.org/wiki/Feature_Oriented_Programming">http://en.wikipedia.org/wiki/Feature_Oriented_Programming</a><br>
[2] <a href="http://www.cs.utexas.edu/users/schwartz/search.cgi">http://www.cs.utexas.edu/users/schwartz/search.cgi</a><br>