I don&#39;t know if this is exactly what you were expecting as a dummy argument, but I solve this kind of issues like this:<br><br>_L = undefined<br><br>class C a where<br>&nbsp;&nbsp;&nbsp; type TT a<br>&nbsp;&nbsp;&nbsp; val :: a -&gt; TT a<br>&nbsp;&nbsp;&nbsp; <br>
instance C () where<br>&nbsp;&nbsp;&nbsp; type TT () = ()<br>&nbsp;&nbsp;&nbsp; val _ = ()<br><br>instance (C a, C b) =&gt; C (a, b) where<br>&nbsp;&nbsp;&nbsp; type TT (a,b) = (TT a, TT b)<br>&nbsp;&nbsp;&nbsp; val _ = (val (_L :: a),val (_L :: b))<br><br>Why normal unification (val :: TT a) does not work I can&#39;t say why, but this kind of behavior is not solely for type families.<br>
<br>Cheers,<br>hugo<br><br><br>