compare [comparing fst, comparing snd]
>>> data A = A Int Char deriving Generic >>> instance HVector A >>> compare (A 1 'c') (A 2 'c') LT
>>> :kind! Eval (Compare "a" "b") Eval (Compare "a" "b") :: Ordering = LT
>>> :kind! Eval (Compare '[1, 2, 3] '[1, 2, 3]) Eval (Compare '[1, 2, 3] '[1, 2, 3]) :: Ordering = EQ
>>> :kind! Eval (Compare '[1, 3] '[1, 2]) Eval (Compare '[1, 3] '[1, 2]) :: Ordering = GT