<br><font size=2 face="sans-serif">Hello,</font>
<br><tt><font size=2><br>
&gt; Thanks. This sort of works, but shifts the problem to another context.
Now it<br>
&gt; seems that I can't hide the extra type information in the existential<br>
&gt; types, which is what I want to do. </font></tt>
<br><tt><font size=2>&gt;</font></tt>
<br><tt><font size=2>I think that you can't abstract over a type context,
i.e. you can't expect type inference to instantiate a type variable to
a constrained polymorphic type.</font></tt>
<br>
<br><tt><font size=2>I get the impression that GADTs are a bit of a distraction
for what you are aiming to do. I'm not sure exactly what you mean by </font></tt>
<br><tt><font size=2>&gt; </font></tt>
<br><tt><font size=2>&gt; &gt;<i> :t insert (undefined::A) (undefined::
A ::: Nil)<br>
</i>&gt; insert (undefined::A) (undefined:: A ::: Nil) :: A ::: Nil <br>
&gt; <br>
&gt; But what I really want to do is wrap this up so that it can be used
<br>
&gt; at runtime, not just in the type-checker, so that (just a sketch)
<br>
&gt; I could have<br>
&gt; <br>
&gt; insert 'A' empty :: Set (A ::: Nil)<br>
&gt; <br>
&gt; where the runtime value of the set is fully determined by its type.
<br>
&gt;</font></tt>
<br><tt><font size=2>but it looks like it should be a realtively easy bit
of machinery to add to what you already had.</font></tt>
<br>
<br><tt><font size=2>Also, in case you haven't already seen these, other
good sources of type level programming are the HList paper (http://homepages.cwi.nl/~ralf/HList/)
and the OOHaskell paper (http://homepages.cwi.nl/~ralf/OOHaskell/)</font></tt>
<br>
<br><tt><font size=2>-Jeff</font></tt>
<br>
<br>
<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>