<div dir="ltr">would this work:<div><br></div><div><div>{-# LANGUAGE MultiParamTypeClasses, InstanceSigs #-}</div><div>module Mdk where</div><div><br></div><div>data C a b = Ab a b | Ba b a</div><div><br></div><div><br></div><div>class Mdk a b where</div><div>    mdk::a -> b -> C a b</div><div><br></div><div><br></div><div>instance (Eq a, Eq b) => Eq (C a b) where</div><div>    (==)::C a b -> C a b -> Bool</div><div>    (==) (Ab a1 b1) (Ab a2 b2) = a1 == a2 && b1 == b2</div><div>    (==) (Ab a1 b1) (Ba b2 a2) = a1 == a2 && b1 == b2</div><div>    (==) (Ba b2 a2) (Ab a1 b1) = a1 == a2 && b1 == b2</div><div>    (==) (Ba b2 a2) (Ba b1 a1) = a1 == a2 && b1 == b2</div><div><br></div>​?</div></div>