cmp3 :: Ord b => (a -> b) -> a -> a -> a
cmp3 f u v    =   if f u <= f v then u else v
cmp3 :: Ord b => (a -> b) -> a -> a -> a
cmp3 f u v    =   if f u <= f v then u else v
cmp3 f u v    =   if f u <= f v then u else v