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