1 2 3
deferEither @(_ ~ _) :: (Typeable w1, Typeable w2) => proxy (w1 ~ w2) -> ((w1 ~ w2) => r) -> Either String r