<p>What&#39;s wrong with fun-deps? The associated type synonym syntax is prettier, but I didn&#39;t tknow that fun-deps were evil.</p>
<p>Do you have any links?</p>
<p>Take care,<br>
Antoine</p>
<p><blockquote type="cite">On Aug 14, 2010 5:19 AM, &quot;Andrew Coppin&quot; &lt;<a href="mailto:andrewcoppin@btinternet.com">andrewcoppin@btinternet.com</a>&gt; wrote:<br><br>As I understand it, ATs were invented because FDs are &quot;evil&quot; and must never be used ever for any purpose. However, it doesn&#39;t seem to be possible to use ATs to do the same things that FDs can do.<br>

<br>
You can use ATs to write type functions, which take one type and return another type. This allows you to express type relationships in a very elegant way. However, what it does /not/ seem to allow you to do is express one-to-one relationships.<br>

<br>
For example, I&#39;d like to be able to say that the next vector up from a Vector3 is a Vector4, and the next vector down is a Vector2. And I can say that. What I can&#39;t say is that the *only* next vector up is a Vector4. And thus, all my code is littered with ambiguous type warnings because although /currently/ there&#39;s only one class instance, somebody could come along some day and write another one.<br>

<br>
What am I missing?<br>
<br>
_______________________________________________<br>
Haskell-Cafe mailing list<br>
<a href="mailto:Haskell-Cafe@haskell.org" target="_blank">Haskell-Cafe@haskell.org</a><br>
<a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br>
</blockquote></p>