<br><font size=2 face="sans-serif">Hello,</font>
<br>
<br><font size=2 face="sans-serif">&nbsp; You should be able to use fundeps
to do exactly what you describe below. </font>
<br>
<br><font size=2 face="sans-serif">&nbsp; Can you make a relatively small
self-contained example which exemplifies the ugliness you see? </font>
<br>
<br><font size=2 face="sans-serif">-Jeff</font>
<br>
<br>
<br><tt><font size=2>haskell-cafe-bounces@haskell.org wrote on 12/07/2007
11:24:35 AM:<br>
<br>
&gt; <br>
&gt; I have some type-level sets using fundeps working whereby equality
and<br>
&gt; membership etc are predicate functions. This seems to leads to an
explosion<br>
&gt; of ugly code, with `If' class constraints etc getting out of hand
-- I want<br>
&gt; to treat these as relations instead so providing the definition describes<br>
&gt; everything that is 'in' and nothing that is 'out'. I've been using
Oleg's<br>
&gt; paper on lightweight static resources [1] as a template for this.
I want to<br>
&gt; do something like this (supposing I have an EQ relation, (:::) for
consing):<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; <br>
&gt; class Member x y <br>
&gt; instance EQ x y &nbsp; &nbsp; &nbsp;=&gt; Member x (y:::ys) <br>
&gt; instance Member x ys =&gt; Member x (y:::ys)<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; <br>
&gt; But I can certainly see why this isn't possible (It's the equivalent
of<br>
&gt; pattern-matching on the constraints I suppose). Do type families provide
a<br>
&gt; way to do this kind of thing or do I need a different strategy altogether,<br>
&gt; involving GADTs or whatever?<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; <br>
&gt; Thanks,<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; <br>
&gt; [1] http://okmij.org/ftp/Computation/resource-aware-prog/tfp.pdf<br>
&gt; -- <br>
&gt; View this message in context: http://www.nabble.com/fundeps-and-<br>
&gt; overlapping-undecidable-instances-tf4962996.html#a14215583<br>
&gt; Sent from the Haskell - Haskell-Cafe mailing list archive at Nabble.com.<br>
&gt; <br>
&gt; _______________________________________________<br>
&gt; Haskell-Cafe mailing list<br>
&gt; Haskell-Cafe@haskell.org<br>
&gt; http://www.haskell.org/mailman/listinfo/haskell-cafe<br>
</font></tt>
<br>
<span style="font-family:'Arial',sans-serif; font-size:8pt; color:#000000">---<br>
<br>
This e-mail may contain confidential and/or privileged information. If you <br>
are not the intended recipient (or have received this e-mail in error) <br>
please notify the sender immediately and destroy this e-mail. Any <br>
unauthorized copying, disclosure or distribution of the material in this <br>
e-mail is strictly forbidden.</span>