T9222.hs:13:3: error: • Couldn't match type ‘c0’ with ‘c’ ‘c0’ is untouchable inside the constraints: a ~ '(b0, c0) bound by the type of the constructor ‘Want’: (a ~ '(b0, c0)) => Proxy b0 at T9222.hs:13:3-43 ‘c’ is a rigid type variable bound by the type of the constructor ‘Want’: forall k2 k3 (a :: (k2, k3)) (b :: k2) (c :: k3). ((a ~ '(b, c)) => Proxy b) -> Want a at T9222.hs:13:3-43 • In the ambiguity check for ‘Want’ To defer the ambiguity check to use sites, enable AllowAmbiguousTypes In the definition of data constructor ‘Want’ In the data type declaration for ‘Want’