I don'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> type TT a<br> val :: a -> TT a<br> <br>
instance C () where<br> type TT () = ()<br> val _ = ()<br><br>instance (C a, C b) => C (a, b) where<br> type TT (a,b) = (TT a, TT b)<br> val _ = (val (_L :: a),val (_L :: b))<br><br>Why normal unification (val :: TT a) does not work I can't say why, but this kind of behavior is not solely for type families.<br>
<br>Cheers,<br>hugo<br><br><br>